Функция WaitForDebugEvent ожидает событие отладки, которое произойдет в отлаживаемом процессе.
Синтаксис
BOOL WaitForDebugEvent( LPDEBUG_EVENT lpDebugEvent, DWORD dwMilliseconds ); |
Параметры
lpDebugEvent
[out] Указатель на структуру DEBUG_EVENT, которая получает информацию о событии отладки.dwMilliseconds
[in] Число миллисекунды, в течение которых ожидается событие отладки. Если этот параметр равняется нулю, функция проверяет событие отладки и возвращает значение немедленно. Если параметр INFINITE (БЕСКОНЕЧНО), функция не возвращает значение до тех пор, пока не совершится событие отладки.Возвращаемые значения
Если функция завершается успешно, возвращаемое значение не нуль.
Если функция завершается ошибкой, возвращаемое значение равняется нулю. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Замечания
Только поток, который создавал отлаженный процесс, может вызвать WaitForDebugEvent.
Когда происходит событие CREATE_PROCESS_DEBUG_EVENT, приложение отладчика получает в структуре DEBUG_EVENT дескриптор загрузочного модуля (PE-файла) отлаживаемого процесса, дескриптор отлаживаемого процесса и дескриптор начального потока отлаживаемого процесса. Члены, в которых эти дескрипторы возвращаются - u.CreateProcessInfo.hFile (загрузочный модуль), u.CreateProcessInfo.hProcess (процесс) и u.CreateProcessInfo.hThread (начальный поток). Если система предварительно сообщила о событии отладки EXIT_PROCESS_DEBUG_EVENT, система закрывает дескрипторы процесса и потока, когда отладчик вызывает функцию ContinueDebugEvent. Отладчик должен закрыть дескриптор загрузочного модуля (PE-файла) при помощи вызова функция CloseHandle.
Точно так же, когда происходит событие CREATE_THREAD_DEBUG_EVENT, приложение отладчика получает дескриптор потока, создание которого вызвало событие отладки в члене u.CreateThread.hThread структуры DEBUG_EVENT. Если система предварительно сообщила о событии отладки EXIT_THREAD_DEBUG_EVENT, система закрывает дескрипторы потока, когда отладчик вызывает функцию ContinueDebugEvent.
Когда происходит событие LOAD_DLL_DEBUG_EVENT, приложение отладчика получает дескриптор загружаемой DLL в члене u.LoadDll.hFile структуры DEBUG_EVENT. Этот дескриптор должен быть закрыт приложением отладчика при помощи вызова функции CloseHandle.
Обратите внимание на предупреждение! не ставьте в очередь асинхронный вызов процедуры (APC) в потоке, который вызывает WaitForDebugEvent. |
Код примера
Пример смотри в статье Запись основного цикла отладчика
Смотри также
Обзор Основы отладки, Функции, используемые при отладке, ContinueDebugEvent, DebugActiveProcess, DebugBreak, DEBUG_EVENT, OutputDebugString
Размещение и совместимость WaitForDebugEvent |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да |
и |
Windows NT Workstation |
Да |
е |
Windows Me |
Да |
н |
Windows 98 |
Да |
т |
Windows 95 |
Да |
С |
Windows Server 2003 |
Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека |
Kernel32.lib |
|
Используемая DLL | kernel32.dll | |
Заголовочный файл | ||
- объявлено в |
Winbase.h |
|
- включено в |
Windows.h |
|
Unicode |
Нет |
|
Замечания по платформе |
Не имеется |