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)

另请参阅

GetDebuggerData

Ioctl