IDebugEventCallbacks::ChangeDebuggeeState 方法 (dbgeng.h)
当引擎对目标进行更改或检测到更改时, 将调用 ChangeDebuggeeState 回调方法。
语法
HRESULT ChangeDebuggeeState(
[in] ULONG Flags,
[in] ULONG64 Argument
);
参数
[in] Flags
指定对目标所做的更改的类型。 标志 可能采用以下值之一:
值 | 说明 |
---|---|
DEBUG_CDS_ALL | 目标中已发生一般更改。 例如,目标一直在执行,或者引擎刚刚附加到目标。 |
DEBUG_CDS_REGISTERS | 目标的处理器寄存器已更改。 |
DEBUG_CDS_DATA | 目标的数据空间已更改。 |
DEBUG_CDS_REFRESH | 通知 GUI 客户端刷新调试器窗口。 |
[in] Argument
提供有关目标中更改的其他信息。 Argument 值的解释取决于 Flags 的值:
- DEBUG_CDS_ALL
- Argument 的值为零。
- DEBUG_CDS_REGISTERS
- 如果单个寄存器已更改, Argument 的值是该寄存器的索引。 否则, Argument 的值DEBUG_ANY_ID。
- DEBUG_CDS_DATA
-
Argument 的值指定更改了哪些数据空间。 下表包含 Argument 的可能值。
值 说明 DEBUG_DATA_SPACE_VIRTUAL 目标的虚拟内存已更改。 DEBUG_DATA_SPACE_PHYSICAL 目标的物理内存已更改。 DEBUG_DATA_SPACE_CONTROL 目标的控制内存已更改。 DEBUG_DATA_SPACE_IO 目标的 I/O 端口已接收输入或输出。 DEBUG_DATA_SPACE_MSR 目标 Model-Specific 寄存器 (MSR) 已更改。 DEBUG_DATA_SPACE_BUS_DATA 目标的总线内存已更改。 - DEBUG_CDS_REFRESH
-
下表包含 Argument 的可能值。
值 DEBUG_CDS_REFRESH_EVALUATE DEBUG_CDS_REFRESH_EXECUTE DEBUG_CDS_REFRESH_EXECUTECOMMANDFILE DEBUG_CDS_REFRESH_ADDBREAKPOINT DEBUG_CDS_REFRESH_REMOVEBREAKPOINT DEBUG_CDS_REFRESH_WRITEVIRTUAL DEBUG_CDS_REFRESH_WRITEVIRTUALUNCACHED DEBUG_CDS_REFRESH_WRITEPHYSICAL DEBUG_CDS_REFRESH_WRITEPHYSICAL2 DEBUG_CDS_REFRESH_SETVALUE DEBUG_CDS_REFRESH_SETVALUE2 DEBUG_CDS_REFRESH_SETSCOPE DEBUG_CDS_REFRESH_SETSCOPEFRAMEBYINDEX DEBUG_CDS_REFRESH_SETSCOPEFROMJITDEBUGINFO DEBUG_CDS_REFRESH_SETSCOPEFROMSTOREDEVENT DEBUG_CDS_REFRESH_INLINESTEP DEBUG_CDS_REFRESH_INLINESTEP_PSEUDO
返回值
引擎忽略返回值,除非它指示远程过程调用错误;在这种情况下,将禁用注册此 IDebugEventCallbacks 对象的客户端。
注解
仅当在 IDebugEventCallbacks::GetInterestMask 返回的掩码中设置了DEBUG_EVENT_CHANGE_DEBUGGEE_STATE标志时,引擎才会调用 ChangeDebuggeeState。
有关处理事件的详细信息,请参阅 监视事件。 有关管理目标内存(包括寄存器和数据空间)的信息,请参阅 内存访问。 有关目标的虚拟内存和物理内存的信息,请参阅 虚拟内存和物理内存。 有关目标控制内存、I/O 端口、MSR 和总线内存的信息,请参阅 其他数据空间。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | dbgeng.h (包括 Dbgeng.h) |