WaitForDebugEventEx 함수(debugapi.h)
디버깅 중인 프로세스에서 디버깅 이벤트가 발생하기를 기다립니다.
구문
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 함수를 호출하여 디버거 애플리케이션에서 이 핸들을 닫아야 합니다.
예제
예제는 디버거의 기본 루프 작성을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows 10 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2016 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | debugapi.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |