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
对象。