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)

另请参阅

GetDebuggerData

Ioctl