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

指定要执行的命令行以创建新进程。 如果 CommandLineNULL,则不会创建任何进程,并且这些方法将使用 ProcessId 附加到现有进程。

[in] OptionsBuffer

指定进程创建选项。 OptionsBuffer 是指向 DEBUG_CREATE_PROCESS_OPTIONS 结构的指针。

[in] OptionsBufferSize

指定 optionsBuffer 缓冲区的大小。 这应设置为 sizeof(DEBUG_CREATE_PROCESS_OPTIONS)

[in, optional] InitialDirectory

指定进程的起始目录。 仅当 命令行NULL时,才使用此参数。 如果 InitialDirectoryNULL,则使用进程服务器的当前目录。

[in, optional] Environment

为新进程指定环境块。 环境块由以 null 结尾的字符串的 null 终止块组成。 每个字符串的格式如下:

name=value

请注意,环境块的最后两个字符都 NULL:一个用于终止字符串,另一个用于终止该块。

如果 环境 设置为 NULL,则新进程将继承进程服务器的环境块。 如果在 OptionsBuffer 中设置了DEBUG_CREATE_PROCESS_THROUGH_RTL标志,则必须 NULL环境

[in] ProcessId

指定调试器将附加到的目标进程的进程 ID。 如果 ProcessID 为零,调试器将附加到从命令行 创建的进程。

[in] AttachFlags

指定控制调试器如何附加到目标进程的标志。 有关这些标志的详细信息,请参阅 DEBUG_ATTACH_XXX

返回值

此方法也可能返回错误值。 有关详细信息,请参阅 返回值

返回代码 描述
S_OK
该方法成功。
E_INVALIDARG
如果 CommandLineNULL,并且 ProcessId 为零,则返回此值。

言论

此方法仅适用于实时用户模式调试。

如果 CommandLineNULL,并且 ProcessId 不为零,则引擎将创建处于挂起状态的进程。 在引擎成功连接到 ProcessId中指定的进程后,该引擎将恢复此新创建的进程。

注意 在调用 WaitForEvent 方法之前,引擎不会完全附加到进程。 只有在进程生成事件(例如 create-process 事件)之后,它才会在调试器会话中可用。
 
有关创建和附加到实时用户模式目标的详细信息,请参阅 实时 User-Mode 目标

要求

要求 价值
目标平台 桌面
标头 dbgeng.h (包括 Dbgeng.h)

另请参阅

.attach (附加到进程)

.create (创建进程)

AbandonCurrentProcess

AttachProcess

ConnectProcessServer

CreateProcess2

DetachCurrentProcess

GetRunningProcessDescription

GetRunningProcessSystemIds

IDebugClient5

TerminateCurrentProcess