Share via


WaitForDebugEvent 関数 (debugapi.h)

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

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

構文

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 関数を呼び出してデバッガー アプリケーションによって閉じる必要があります。

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

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

要件

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

関連項目

ContinueDebugEvent

DEBUG_EVENT

DebugActiveProcess

DebugBreak

デバッグ イベント

デバッグ関数

OutputDebugString