Поделиться через


Функция WaitForDebugEventEx (debugapi.h)

Ожидает возникновения события отладки в отлаживаемом процессе.

Важно В прошлом операционная система не выводил строки Юникода через OutputDebugStringW , а выводил только строки ASCII. Чтобы вынудить OutputDebugStringW правильно выводить строки Юникода, отладчики должны вызвать WaitForDebugEventEx , чтобы принять новое поведение. При вызове WaitForDebugEventEx операционная система будет знать, что отладчик поддерживает Юникод и специально выбирает получение строк Юникода.
 

Синтаксис

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 (process) и u.CreateProcessInfo.hThread (начальный поток). Если система ранее сообщала о событии отладки EXIT_PROCESS_DEBUG_EVENT, система закрывает дескриптор для процесса и потока, когда отладчик вызывает функцию ContinueDebugEvent . Отладчик должен закрыть дескриптор для файла изображения, вызвав функцию 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) в поток, вызывающий WaitForDebugEventEx.
 

Примеры

Пример см. в разделе Написание главного цикла отладчика.

Требования

   
Минимальная версия клиента Windows 10 [только классические приложения]
Минимальная версия сервера Windows Server 2016 [только классические приложения]
Целевая платформа Windows
Header debugapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

ContinueDebugEvent

DEBUG_EVENT

DebugActiveProcess

ОтладкаBreak

События отладки

Отладка функций

OutputDebugString