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]和数组中的pProgramrgpProgramNodes程序和/或程序节点数。

pCallback
[in] 用于将调试事件发送到 SDM 的 IDebugEventCallback2 对象。

dwReason
[in]ATTACH_REASON枚举中的一个值,指定附加这些程序的原因。 有关详细信息,请参阅“备注”部分。

返回值

如果成功,则返回 S_OK;否则,返回错误代码。

注解

附加到程序有三个原因,如下所示:

  • ATTACH_REASON_LAUNCH 指示 DE 正在附加到程序,因为用户启动了包含该程序的进程。

  • ATTACH_REASON_USER 指示用户已显式请求 DE 附加到程序(或包含程序的进程)。

  • ATTACH_REASON_AUTO 指示 DE 正在附加到特定程序,因为它已在特定进程中调试其他程序。 这也称为自动附加。

    调用此方法时,DE 需要按顺序发送这些事件:

  1. IDebugEngineCreateEvent2 (如果尚未为调试引擎的特定实例发送)

  2. IDebugProgramCreateEvent2

  3. IDebugLoadCompleteEvent2

    此外,如果附加 ATTACH_REASON_LAUNCH的原因是,DE 需要发送 IDebugEntryPointEvent2 事件。

    DE 获取对应于正在调试的程序的 IDebugProgramNode2 对象后,可以查询任何专用接口。

    在调用数组中程序pProgramrgpProgramNodes节点的方法(如果需要)之前,应在表示程序节点的接口上IDebugProgram2启用模拟。 但是,通常不需要此步骤。 有关详细信息,请参阅 “安全问题”。

另请参阅