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)