Функция WaitForDebugEvent


Функция 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

Нет

 Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz