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

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

Синтаксис

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

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

[in] OptionsBuffer

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

[in] OptionsBufferSize

Задает размер буфера OptionsBuffer. Для этого параметра должно быть задано значение sizeof(DEBUG_CREATE_PROCESS_OPTIONS).

[in, optional] InitialDirectory

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

[in, optional] Environment

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

name=value

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

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

[in] ProcessId

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

[in] AttachFlags

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

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

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

Код возврата Описание
S_OK
Метод выполнен успешно.
E_INVALIDARG
Возвращается, если CommandLine имеет значение NULL , а ProcessId равно нулю.

Комментарии

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

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

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

Требования

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

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

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

.create (Create Process)

AbandonCurrentProcess

AttachProcess

ConnectProcessServer

CreateProcess2

DetachCurrentProcess

GetRunningProcessDescription

GetRunningProcessSystemIds

IDebugClient5

TerminateCurrentProcess