IDebugEngine2::Attach
将调试引擎 (DE) 附加到程序或程序。 当 DE 在进程内运行到 SDM 时,由会话调试管理器 (SDM)调用。
语法
int Attach(
IDebugProgram2[] pProgram,
IDebugProgramNode2[] rgpProgramNodes,
uint celtPrograms,
IDebugEventCallback2 pCallback,
Enum_ATTACH_REASON dwReason
);
参数
pProgram
[in]表示要附加到的程序的 IDebugProgram2 对象的数组。 这些是端口程序。
rgpProgramNodes
[in]表示程序节点的 IDebugProgramNode2 对象的数组,每个程序对应一个。 此数组中的程序节点表示与中 pProgram
相同的程序。 提供了程序节点,以便 DE 可以标识要附加到的程序。
celtPrograms
[in]和数组中的pProgram
rgpProgramNodes
程序和/或程序节点数。
pCallback
[in] 用于将调试事件发送到 SDM 的 IDebugEventCallback2 对象。
dwReason
[in]ATTACH_REASON枚举中的一个值,指定附加这些程序的原因。 有关详细信息,请参阅“备注”部分。
返回值
如果成功,则返回 S_OK
;否则,返回错误代码。
注解
附加到程序有三个原因,如下所示:
ATTACH_REASON_LAUNCH
指示 DE 正在附加到程序,因为用户启动了包含该程序的进程。ATTACH_REASON_USER
指示用户已显式请求 DE 附加到程序(或包含程序的进程)。ATTACH_REASON_AUTO
指示 DE 正在附加到特定程序,因为它已在特定进程中调试其他程序。 这也称为自动附加。调用此方法时,DE 需要按顺序发送这些事件:
IDebugEngineCreateEvent2 (如果尚未为调试引擎的特定实例发送)
-
此外,如果附加
ATTACH_REASON_LAUNCH
的原因是,DE 需要发送 IDebugEntryPointEvent2 事件。DE 获取对应于正在调试的程序的 IDebugProgramNode2 对象后,可以查询任何专用接口。
在调用数组中程序
pProgram
rgpProgramNodes
节点的方法(如果需要)之前,应在表示程序节点的接口上IDebugProgram2
启用模拟。 但是,通常不需要此步骤。 有关详细信息,请参阅 “安全问题”。