Метод IDebugClient4::AttachProcess (dbgeng.h)

Метод AttachProcess подключает обработчик отладчика к пользовательскому обработчику.

Синтаксис

HRESULT AttachProcess(
  [in] ULONG64 Server,
  [in] ULONG   ProcessId,
  [in] ULONG   AttachFlags
);

Параметры

[in] Server

Указывает сервер обработки, используемый для присоединения к процессу. Если значение Server равно нулю, подсистема будет подключаться к локальному процессу без использования сервера обработки.

[in] ProcessId

Указывает идентификатор целевого процесса, к котором будет присоединен отладчик.

[in] AttachFlags

Задает флаги, управляющие присоединением отладчика к целевому процессу. Дополнительные сведения об этих флагах см. в разделе Примечания.

Возвращаемое значение

Этот метод также может возвращать значения ошибок. Дополнительные сведения см. в разделе Возвращаемые значения .

Код возврата Описание
S_OK
Метод выполнен успешно.

Комментарии

Этот метод доступен только для динамической отладки в пользовательском режиме.

Примечание Подсистема не полностью подключается к процессу, пока не будет вызван метод WaitForEvent . Только после того, как процесс сгенерировал событие , например событие процесса создания, оно становится доступным в сеансе отладчика.
 
Дополнительные сведения о создании и подключении к динамическим целевым объектам пользовательского режима см. в разделе Live User-Mode Targets.

Битовые флаги DEBUG_ATTACH_XXXX управляют присоединением обработчика отладчика к процессу в пользовательском режиме. Параметры DEBUG_ATTACH_XXX, используемые при подключении к целевому объекту ядра, см. в разделе AttachKernel.

В следующей таблице описаны возможные значения флагов.

Константа Описание
DEBUG_ATTACH_NONINVASIVE Прикрепите к целевому объекту неинвазивно. Дополнительные сведения о неинвазивной отладке см. в разделе Неинвазивная отладка (режим пользователя).

Если этот флаг установлен, флаги DEBUG_ATTACH_EXISTING, DEBUG_ATTACH_INVASIVE_NO_INITIAL_BREAK и DEBUG_ATTACH_INVASIVE_RESUME_PROCESS задавать нельзя.

DEBUG_ATTACH_EXISTING Повторное присоединение к приложению, к которому отладчик уже подключен (и, возможно, прерван). Дополнительные сведения о повторном подключении к целевым объектам см. в разделе Повторное подключение к целевому приложению.

Если этот флаг установлен, другие флаги DEBUG_ATTACH_XXXX не должны быть установлены.

DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND Не приостанавливайте потоки целевого объекта при неинвазивном подключении.

Если этот флаг установлен, необходимо также задать флаг DEBUG_ATTACH_NONINVASIVE.

DEBUG_ATTACH_INVASIVE_NO_INITIAL_BREAK (Windows XP и более поздние версии) Не запрашивайте начальное прерывание при присоединении к целевому объекту.

Если этот флаг установлен, то флаги DEBUG_ATTACH_NONINVASIVE и DEBUG_ATTACH_EXISTING задавать нельзя.

DEBUG_ATTACH_INVASIVE_RESUME_PROCESS Если этот флаг установлен, то флаги DEBUG_ATTACH_NONINVASIVE и DEBUG_ATTACH_EXISTING задавать нельзя.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть dbgeng.h (включая Dbgeng.h)

См. также раздел

.attach (присоединение к процессу)

AbandonCurrentProcess

AttachKernel

ConnectProcessServer

CreateProcess2

CreateProcessAndAttach2

DetachCurrentProcess

GetRunningProcessDescription

GetRunningProcessSystemIds

IDebugClient

IDebugClient2

IDebugClient3

IDebugClient4

IDebugClient5

TerminateCurrentProcess

Обработчик отладчика