2011-01-04 7 views
1

Microsoft.NET SDK CompactFramework v2.0を使用してWindows CE 5.0タブレットをプログラムでシャットダウンする必要があります。私は私のビルドにとExitWindowsExを追加する方法はありソリューションhereを使用してみましたが、エラーメッセージC#Windows CE 5.0エラー:PInvoke DLL coredllでエントリポイントExitWindowsExを見つけることができない

Can't find entry point ExitWindowsEx in PInvoke DLL coredll

を得ましたか。 私は別のコアリングが必要ですか?

[Flags] 
public enum ExitFlags 
{ 
    Reboot = 0x02, 
    PowerOff = 0x08 
} 
[DllImport("coredll")] 
public static extern int ExitWindowsEx(ExitFlags flags, int reserved); 
private static void buttonShutdown_Click(object sender, EventArgs e) 
{ 
    ExitWindowsEx(ExitFlags.PowerOff, 0); 
} 
private static void buttonRestart_Click(object sender, EventArgs e) 
{ 
    ExitWindowsEx(ExitFlags.Reboot, 0); 
} 

答えて

2

coredll.dllを置き換えることはできません。これはOSの一部です。 coredllを変更するには、まったく新しいOSが必要です。

しかし、あなたが必要とすることは明らかではありません。 ExitWindowsExは、あなたが作るコール(CEではサポートされていません)ではなく、ソフトリセットのためにIOCTL_HAL_REBOOTを使用してKernelIoControlを呼び出す必要があります。

実際には標準的な「電源オフ」がないので、本当に電源を切る必要がある場合は、OEMにお問い合わせください。ただし、デバイスのサスペンドモード(特定のOSに搭載されていることを前提としています)があります。サスペンドはプログラムでP/Invoke GwesPowerOffSystemを呼び出すか、キーボードストリームにVK_OFFキーを投稿することで取得できます。

関連する問題