다음을 통해 공유


WaitForDebugEventEx 함수(debugapi.h)

디버깅 중인 프로세스에서 디버깅 이벤트가 발생하기를 기다립니다.

중요 이전에는 운영 체제가 OutputDebugStringW 를 통해 유니코드 문자열을 출력하지 않고 대신 ASCII 문자열만 출력했습니다. OutputDebugStringW가 유니코드 문자열을 올바르게 출력하도록 하려면 디버거가 WaitForDebugEventEx를 호출하여 새 동작을 옵트인해야 합니다. WaitForDebugEventEx를 호출할 때 운영 체제는 디버거가 유니코드를 지원하고 특히 유니코드 문자열 수신을 옵트인한다는 것을 알게 됩니다.
 

구문

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 (프로세스) 및 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 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

ContinueDebugEvent

DEBUG_EVENT

DebugActiveProcess

DebugBreak

디버깅 이벤트

디버깅 함수

OutputDebugString