DBGKD_GET_VERSION64 structure (wdbgexts.h)
L’opération ioctl IG_GET_KERNEL_VERSION reçoit des informations relatives à la version du système d’exploitation de la cible. Lors de l’appel d’Ioctl avec IoctlType défini sur IG_GET_KERNEL_VERSION, IpvData doit contenir un instance de la structure DBGKD_GET_VERSION64.
Syntaxe
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;
Membres
MajorVersion
Reçoit 0xF si le système d’exploitation de la cible est une build gratuite, et 0xC s’il s’agit d’une build vérifiée.
MinorVersion
Reçoit le numéro de build du système d’exploitation de la cible.
ProtocolVersion
Reçoit la version du protocole de débogueur utilisée pour communiquer entre le débogueur et la cible.
KdSecondaryVersion
Reçoit un numéro de version secondaire utilisé pour distinguer les contextes plus anciens et déconseillés.
Flags
Reçoit un ensemble d’indicateurs de bits pour la session de débogage actuelle. Les indicateurs suivants peuvent être présents.
Indicateur | Signification en cas de définition |
---|---|
DBGKD_VERS_FLAG_MP | Le noyau cible a été compilé avec la prise en charge de plusieurs processeurs. |
DBGKD_VERS_FLAG_DATA | La liste DebuggerDataList est valide. |
DBGKD_VERS_FLAG_PTR64 | La cible utilise des pointeurs 64 bits. |
DBGKD_VERS_FLAG_NOMM | Le cache de mémoire du débogueur est actif. Si ce n’est pas le cas, le débogueur convertit toutes les adresses virtuelles en adresse physique avant d’accéder à la mémoire de la cible. |
DBGKD_VERS_FLAG_HSS | La cible prend en charge le pas à pas matériel. |
DBGKD_VERS_FLAG_PARTITIONS | Il existe plusieurs partitions de système d’exploitation. |
MachineType
Reçoit le type du processeur de la cible. Les types de processeurs possibles sont répertoriés dans le tableau suivant.
Valeur | Processeur |
---|---|
IMAGE_FILE_MACHINE_I386 | Architecture x86 |
IMAGE_FILE_MACHINE_ARM | Architecture ARM |
IMAGE_FILE_MACHINE_IA64 | Architecture Intel Itanium |
IMAGE_FILE_MACHINE_AMD64 | Architecture x64 |
IMAGE_FILE_MACHINE_EBC | Architecture du code d’octet EFI |
MaxPacketType
Reçoit un plus le nombre le plus élevé pour un type de paquet de débogueur reconnu par la cible.
MaxStateChange
Reçoit un plus le nombre le plus élevé pour une modification d’état générée par la cible.
MaxManipulate
Reçoit un de plus que le nombre le plus élevé, reconnu par la cible, pour une commande de manipulation de la cible.
Simulation
Reçoit une indication si la cible est en cours d’exécution simulée. Les valeurs possibles sont répertoriées dans le tableau suivant.
Valeur | Processeur |
---|---|
DBGKD_SIMULATION_NONE | Aucune simulation n’est utilisée. |
DBGKD_SIMULATION_EXDI | La simulation EXDI est utilisée. |
Unused[1]
Inutilisé.
KernBase
Reçoit l’adresse de base de l’image du noyau.
PsLoadedModuleList
Reçoit la valeur de la variable de noyau PsLoadedModuleList.
DebuggerDataList
Reçoit la valeur de la variable de noyau KdDebuggerDataBlock. Pointeur vers une structure KDDEBUGGER_DATA64 ou une structure KDDEBUGGER_DATA32. Utilisez la fonction GetDebuggerData pour extraire cette structure.
Remarques
Les paramètres de l’opération ioctl IG_GET_KERNEL_VERSION sont les membres de la structure DBGKD_GET_VERSION64.
Cette opération n’est disponible que dans le débogage en mode noyau.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | wdbgexts.h (inclure Wdbgexts.h, Dbgeng.h) |