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


Метод IDebugClient5::CreateProcessAndAttach2 (dbgeng.h)

Метод CreateProcessAndAttach 2 создает процесс из указанной командной строки, а затем присоединяется к этому процессу или другому процессу пользовательского режима.

Синтаксис

HRESULT CreateProcessAndAttach2(
  [in]           ULONG64 Server,
  [in, optional] PSTR    CommandLine,
  [in]           PVOID   OptionsBuffer,
  [in]           ULONG   OptionsBufferSize,
  [in, optional] PCSTR   InitialDirectory,
  [in, optional] PCSTR   Environment,
  [in]           ULONG   ProcessId,
  [in]           ULONG   AttachFlags
);

Параметры

[in] Server

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

[in, optional] CommandLine

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

[in] OptionsBuffer

Задает параметры создания процесса. OptionsBuffer — это указатель на структуру DEBUG_CREATE_PROCESS_OPTIONS.

[in] OptionsBufferSize

Задает размер буфера OptionsBuffer. Это значение должно иметь значение sizeof(DEBUG_CREATE_PROCESS_OPTIONS).

[in, optional] InitialDirectory

Указывает начальный каталог для процесса. Этот параметр используется только в том случае, если CommandLine не NULL. Если InitialDirectoryNULL, используется текущий каталог для сервера обработки.

[in, optional] Environment

Задает блок среды для нового процесса. Блок среды состоит из блока, завершаемого значением NULL, для строк, завершаемых значением NULL. Каждая строка имеет форму:

name=value

Обратите внимание, что последние два символа блока среды являются null: один для завершения строки и одного для завершения блока.

Если среды задано значение NULL, новый процесс наследует блок среды сервера обработки. Если флаг DEBUG_CREATE_PROCESS_THROUGH_RTL задан в OptionsBuffer, среда должна быть NULL.

[in] ProcessId

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

[in] AttachFlags

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

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

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

Возвращаемый код Описание
S_OK
Метод был успешным.
E_INVALIDARG
Возвращается, если CommandLineNULL и ProcessId равно нулю.

Замечания

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

Если CommandLine не NULL и ProcessId не равно нулю, подсистема создаст процесс в приостановленном состоянии. Модуль возобновляет созданный процесс после успешного подключения к процессу, указанному в ProcessId.

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

Требования

Требование Ценность
целевая платформа Настольный
заголовка dbgeng.h (include Dbgeng.h)

См. также

.attach (Attach to Process)

.create (Create Process)

abandonCurrentProcess

AttachProcess

ConnectProcessServer

CreateProcess2

DetachCurrentProcess

GetRunningProcessDescription

GetRunningProcessSystemIds

IDebugClient5

TerminateCurrentProcess