WaitForDebugEventEx 関数 (debugapi.h)

デバッグ中のプロセスでデバッグ イベントが発生するまで待機します。

大事な 以前は、オペレーティング システムは OutputDebugStringW を介して Unicode 文字列を出力せず、代わりに ASCII 文字列のみを出力していました。 OutputDebugStringW を強制的に Unicode 文字列を正しく出力するには、デバッガーで WaitForDebugEventEx を呼び出して新しい動作をオプトインする必要があります。 WaitForDebugEventEx を呼び出すと、オペレーティング システムはデバッガーが Unicode をサポートし、具体的には Unicode 文字列の受信を選択していることを認識します。
 

構文

BOOL WaitForDebugEventEx(
  [out] LPDEBUG_EVENT lpDebugEvent,
  [in]  DWORD         dwMilliseconds
);

パラメーター

[out] lpDebugEvent

デバッグ イベントに関する情報を受け取る DEBUG_EVENT 構造体へのポインター。

[in] dwMilliseconds

デバッグ イベントを待機するミリ秒数。 このパラメーターが 0 の場合、関数はデバッグ イベントをテストし、直ちにを返します。 パラメーターが INFINITE の場合、デバッグ イベントが発生するまで関数は戻りません。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

デバッグ中のプロセスを作成したスレッドのみが WaitForDebugEventEx を呼び出すことができます。

CREATE_PROCESS_DEBUG_EVENTが発生すると、デバッガー アプリケーションは、デバッグ中のプロセスのイメージ ファイルへのハンドル、デバッグ中のプロセスへのハンドル、および DEBUG_EVENT構造で デバッグされているプロセスの初期スレッドへのハンドルを受け取ります。 これらのハンドルが返されるメンバーは、 u.CreateProcessInfo.hFile (イメージ ファイル)、 u.CreateProcessInfo.hProcess (process)、 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 関数を呼び出して閉じる必要があります。

警告WaitForDebugEventEx呼び出すスレッドに非同期プロシージャ 呼び出し (APC) をキューに登録しないでください。
 

例については、「 デバッガーのメイン ループの記述」を参照してください。

要件

   
サポートされている最小のクライアント Windows 10 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2016 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー debugapi.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

ContinueDebugEvent

DEBUG_EVENT

DebugActiveProcess

DebugBreak

デバッグ イベント

デバッグ関数

OutputDebugString