IDebugClient::AttachProcess 方法 (dbgeng.h)

AttachProcess 方法将调试器引擎连接到用户模式进程。

语法

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

参数

[in] Server

指定用于附加到进程的进程服务器。 如果 Server 为零,引擎将在不使用进程服务器的情况下连接到本地进程。

[in] ProcessId

指定调试器将附加到的目标进程的进程 ID。

[in] AttachFlags

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

返回值

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

返回代码 说明
S_OK
方法成功。

注解

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

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

DEBUG_ATTACH_XXX 位标志控制 调试器引擎 如何附加到用户模式进程。 有关附加到内核目标时使用的 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_XXX 标志。

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

调试器引擎