WaitForDebugEvent 関数 (debugapi.h)
デバッグ中のプロセスでデバッグ イベントが発生するまで待機します。
構文
BOOL WaitForDebugEvent(
[out] LPDEBUG_EVENT lpDebugEvent,
[in] DWORD dwMilliseconds
);
パラメーター
[out] lpDebugEvent
デバッグ イベントに関する情報を受け取る DEBUG_EVENT 構造体へのポインター。
[in] dwMilliseconds
デバッグ イベントを待機するミリ秒数。 このパラメーターが 0 の場合、関数はデバッグ イベントをテストし、すぐにを返します。 パラメーターが INFINITE の場合、デバッグ イベントが発生するまで関数は戻りません。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
WaitForDebugEvent を呼び出すことができるのは、デバッグ中のプロセスを作成したスレッドだけです。
CREATE_PROCESS_DEBUG_EVENTが発生すると、デバッガー アプリケーションは、デバッグ中のプロセスのイメージ ファイルへのハンドル、デバッグ中のプロセスへのハンドル、および DEBUG_EVENT構造で デバッグされているプロセスの初期スレッドへのハンドルを受け取ります。 これらのハンドルが返されるメンバーは、 u.CreateProcessInfo.hFile (イメージ ファイル)、 u.CreateProcessInfo.hProcess (プロセス)、 および u.CreateProcessInfo.hThread (初期スレッド) です。 システムが以前にEXIT_PROCESS_DEBUG_EVENTデバッグ イベントを報告した場合、デバッガーが ContinueDebugEvent 関数を呼び出すと、システムはプロセスとスレッドへのハンドルを閉じます。 デバッガーは CloseHandle 関数を呼び出して、イメージ ファイルへのハンドルを閉じる必要があります。
同様に、CREATE_THREAD_DEBUG_EVENTが発生すると、デバッガー アプリケーションは、DEBUG_EVENT構造体のu.CreateThread.hThread メンバーでデバッグ イベントを発生させたスレッドへのハンドルを受け取ります。 システムが以前にEXIT_THREAD_DEBUG_EVENTデバッグ イベントを報告した場合、デバッガーが ContinueDebugEvent 関数を呼び出すと、システムはスレッドにハンドルを閉じます。
LOAD_DLL_DEBUG_EVENTが発生すると、デバッガー アプリケーションは、DEBUG_EVENT構造体の u.LoadDll.hFile メンバーに読み込まれた DLL へのハンドルを受け取ります。 このハンドルは、 CloseHandle 関数を呼び出してデバッガー アプリケーションによって閉じる必要があります。
例
例については、「 デバッガーのメイン ループの記述」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | debugapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |