Share via


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

等候偵錯事件的毫秒數。 如果此參數為零,函式會測試偵錯事件並立即傳回。 如果參數為 INFINITE,則函式不會在發生偵錯事件之前傳回。

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

只有建立正在偵錯之進程的執行緒可以呼叫 WaitForDebugEventEx

發生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 函式來關閉此控制碼。

警告 請勿將 非同步程序呼叫 排入佇列, (APC) 至呼叫 WaitForDebugEventEx的執行緒。
 

範例

如需範例,請參閱 撰寫偵錯工具的 Main 迴圈

需求

   
最低支援的用戶端 Windows 10 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2016 [僅限傳統型應用程式]
目標平台 Windows
標頭 debugapi.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

ContinueDebugEvent

DEBUG_EVENT

DebugActiveProcess

DebugBreak

偵錯事件

偵錯函式

OutputDebugString