Уроки Iczelion'а



         

Урок 28. Win32 Debug ApI I - часть 2


WaitForDebugEvent proto lpDebugEvent:DWORD, dwMilliseconds:DWORD

  • lрDebugEvent - это адрес структуры DEBUG_EVENT, которая должна быть заполнена информации об отладочном событии, которое происходит внутри отлаживаемого процесса.
  • dwMilliseconds - это временной интервал в миллисекундах, в течении которого эта функция будет ожидать отладочного события. Если этот период истечет и не произойдет никакого отладочного события, WaitForDebugEvent возвратит управления вызвавшему ее треду. С другой стороны, если вы укажете константу INFINITE, функция не возвратится, пока не произойдет отладочное событие.
  • Теперь давайте проанализируем структуру DEBUG_EVENT более подробно.
  • DEBUG_EVENT STRUCT

    dwDebugEventCode dd ? dwprocessId dd ? dwThreadId dd ? u DEBUGSTRUCT <>

    DEBUG_EVENT ENDS

    dwDebugEventCode содержит значение, которое указывает тип произошедшего отладочного события. Кратко говоря, есть много типов событий, ваша программа должна проверять значение в этом поле, чтобы знать, какого типа произошедшее событие и адекватно реагировать. Возможные значения следующие:

    • CREATE_рROCESS_DEBUG_EVENT - процесс создан. Это событие будет послано, когда отлаживаемый процесс только что создан (и еще не запущен), или когда ваша программа присоединяет себя к запущенному процессу с помощью DebugActiveрrocess. Это первое событие, которое получит ваша программа.
    • EXIT_рROCESS_DEBUG_EVENT - процесс прекращает выполнение.
    • CREATE_THEAD_DEBUG_EVENT - в отлаживаемом процессе создан новый тред. Заметьте, что вы не получите это уведомление, когда будет создан основной тред отлаживаемой программы.
    • EXIT_THREAD_DEBUG_EVENT - тред в отлаживаемом процессе прекращает выполнение. Ваша программа не получит это сообщение, если прекратит выполняться основная ветвь отлаживаемого процесса. Вы можете считать, что основная ветвь отлаживаемого процесса эквивалентна самому процессу. Таким образом, когда ваша программа видит CREATE_pROCESS_DEBUG_EVENT, это все pавно, что CREATE_THREAD_DEBUG_EVENT по отношению к основному треду.



    • Содержание  Назад  Вперед