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
接收一個加上目標所產生狀態變更的最高數位。
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) |