IDebugProcess2::Attach

将会话调试管理器(SDM)附加到进程。

语法

int Attach( 
   IDebugEventCallback2 pCallback,
   Guid[]               rgguidSpecificEngines,
   uint                 celtSpecificEngines,
   int[]                rghrEngineAttach
);

参数

pCallback
[in] 用于调试事件通知的 IDebugEventCallback2 对象。

rgguidSpecificEngines
[in]用于调试进程中运行的程序的调试引擎的 GUID 数组。 此参数可以是 null 值。 有关详细信息,请参阅“备注”。

celtSpecificEngines
[in]数组中的 rgguidSpecificEngines 调试引擎数和数组的大小 rghrEngineAttach

rghrEngineAttach
[in, out]调试引擎返回的 HRESULT 代码数组。 此数组的大小在参数中 celtSpecificEngines 指定。 每个代码通常为或 S_OK S_ATTACH_DEFERRED. 后者表示 DE 当前未附加到任何程序。

返回值

如果成功,则返回 S_OK;否则,返回错误代码。 下表显示了其他可能的值。

说明
E_ATTACH_DEBUGGER_ALREADY_ATTACHED 指定的进程已附加到调试器。
E_ATTACH_DEBUGGEE_PROCESS_SECURITY_VIOLATION 附加过程中发生安全冲突。
E_ATTACH_CANNOT_ATTACH_TO_DESKTOP 桌面进程无法附加到调试器。

备注

附加到进程会将 SDM 附加到在该进程中运行的所有程序,这些程序可由数组中指定的 rgguidSpecificEngines 调试引擎(DE)进行调试。 将 rgguidSpecificEngines 参数设置为 null 值或包含在 GUID_NULL 数组中以附加到进程中的所有程序。

进程中发生的所有调试事件都发送到给定 的 IDebugEventCallback2 对象。 当 SDM 调用此方法时,会提供此 IDebugEventCallback2 对象。

另请参阅