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

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

Синтаксис

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

Параметры

[in] Server

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

[in] ProcessId

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

[in] AttachFlags

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

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

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

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

Замечания

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

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

Битовые флаги DEBUG_ATTACH_XXXX управляют подключением обработчика отладчика к процессу пользовательского режима. Параметры DEBUG_ATTACH_XXXX , используемые при присоединении к целевому объекту ядра, см. в разделе 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 (include Dbgeng.h)

См. также

.attach (Attach to Process)

abandonCurrentProcess

AttachKernel

ConnectProcessServer

CreateProcess2

CreateProcessAndAttach2

DetachCurrentProcess

GetRunningProcessDescription

GetRunningProcessSystemIds

IDebugClient

IDebugClient2

IDebugClient3

IDebugClient4

IDebugClient5

TerminateCurrentProcess

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