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 (include Wdbgexts.h, Dbgeng.h) |