DBGKD_GET_VERSION64 结构 (wdbgexts.h)
IG_GET_KERNEL_VERSION Ioctl 操作接收与目标操作系统版本相关的信息。 在将 IoctlType 设置为 IG_GET_KERNEL_VERSION 的情况下调用 Ioctl 时, IpvData 应包含 DBGKD_GET_VERSION64 结构的实例。
语法
typedef struct _DBGKD_GET_VERSION64 {
USHORT MajorVersion;
USHORT MinorVersion;
UCHAR ProtocolVersion;
UCHAR KdSecondaryVersion;
USHORT Flags;
USHORT MachineType;
UCHAR MaxPacketType;
UCHAR MaxStateChange;
UCHAR MaxManipulate;
UCHAR Simulation;
USHORT Unused[1];
ULONG64 KernBase;
ULONG64 PsLoadedModuleList;
ULONG64 DebuggerDataList;
} DBGKD_GET_VERSION64, *PDBGKD_GET_VERSION64;
成员
MajorVersion
如果目标的操作系统是免费版本,则接收0xF,如果它是已检查的内部版本,则接收0xC。
MinorVersion
接收目标操作系统的内部版本号。
ProtocolVersion
接收调试器协议的版本,该协议用于在调试器与目标之间进行通信。
KdSecondaryVersion
接收一个辅助版本号,该版本号用于区分较旧的已弃用上下文。
Flags
接收当前调试会话的一组位标志。 可以存在以下标志。
标志 | 设置时的含义 |
---|---|
DBGKD_VERS_FLAG_MP | 编译目标内核时支持多个处理器。 |
DBGKD_VERS_FLAG_DATA | DebuggerDataList 列表有效。 |
DBGKD_VERS_FLAG_PTR64 | 目标使用 64 位指针。 |
DBGKD_VERS_FLAG_NOMM | 调试器的内存缓存处于活动状态。 如果未设置此设置,调试器将在访问目标内存之前将所有虚拟地址转换为物理地址。 |
DBGKD_VERS_FLAG_HSS | 目标支持硬件单步执行。 |
DBGKD_VERS_FLAG_PARTITIONS | 存在多个操作系统分区。 |
MachineType
接收目标处理器的类型。 下表列出了可能的处理器类型。
值 | 处理器 |
---|---|
IMAGE_FILE_MACHINE_I386 | x86 体系结构 |
IMAGE_FILE_MACHINE_ARM | ARM 体系结构 |
IMAGE_FILE_MACHINE_IA64 | Intel Itanium 体系结构 |
IMAGE_FILE_MACHINE_AMD64 | x64 体系结构 |
IMAGE_FILE_MACHINE_EBC | EFI 字节代码体系结构 |
MaxPacketType
接收目标识别的调试器数据包类型的一个加号。
MaxStateChange
接收目标生成的状态更改的最大数字加 1。
MaxManipulate
再接收一个由目标识别的最大数字,以便命令操作目标。
Simulation
如果目标处于模拟执行状态,则接收指示。 下表列出了可能的值。
值 | 处理器 |
---|---|
DBGKD_SIMULATION_NONE | 不使用模拟。 |
DBGKD_SIMULATION_EXDI | 使用 EXDI 模拟。 |
Unused[1]
未使用。
KernBase
接收内核映像的基址。
PsLoadedModuleList
接收内核变量 PsLoadedModuleList 的值。
DebuggerDataList
接收内核变量 KdDebuggerDataBlock 的值。 这是指向KDDEBUGGER_DATA64结构或KDDEBUGGER_DATA32结构的指针。 使用函数 GetDebuggerData 提取此结构。
注解
IG_GET_KERNEL_VERSION Ioctl 操作的参数是DBGKD_GET_VERSION64结构的成员。
此操作仅在内核模式调试中可用。
要求
要求 | 值 |
---|---|
Header | wdbgexts.h (包括 Wdbgexts.h、Dbgeng.h) |