DBGKD_GET_VERSION64结构(wdbgexts.h)
IG_GET_KERNEL_VERSION Ioctl作接收与目标作系统版本相关的信息。 调用 Ioctl 时,IoctlType 设置为IG_GET_KERNEL_VERSION,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
接收一个加上目标生成的状态更改的最高数字。
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结构的成员。
此作仅在内核模式调试中可用。
要求
要求 | 价值 |
---|---|
标头 | wdbgexts.h(包括 Wdbgexts.h、Dbgeng.h) |