!vtop
L’extension !vtop convertit une adresse virtuelle en l’adresse physique correspondante et affiche d’autres informations sur les tables de pages et les répertoires de pages.
Syntaxe
!vtop PFN VirtualAddress
!vtop 0 VirtualAddress
Paramètres
DirBase
Spécifie la base du répertoire pour le processus. Chaque processus a son propre espace d’adressage virtuel. Utilisez l’extension !process pour déterminer la base du répertoire pour un processus.
PFN
PFN spécifie le numéro de cadre de page (PFN) de la base du répertoire pour le processus.
0
L’utilisation de !vtop avec le contexte de processus actuel pour la traduction des adresses.
VirtualAddress
Spécifie l’adresse virtuelle dont la page est désirée.
DLL
Kdexts.dll
Informations supplémentaires
Pour voir d’autres méthodes d’obtention de ces résultats, veuillez consulter la section Conversion des adresses virtuelles en adresses physiques. Nous vous recommandons également la section !ptov. Pour des informations sur les tables de pages et les répertoires de pages, veuillez consulter Microsoft Windows Internals (Au cœur de Windows, de Mark Russinovich et David Solomon.
Notes
Pour utiliser cette commande, utilisez d’abord l’extension !process pour déterminer la base du répertoire du processus. Le numéro de cadre de page (PFN) de cette base de répertoire peut être trouvé en supprimant les trois zéros hexadécimaux de fin (en d’autres termes, en décalant le nombre de 12 bits vers la droite).
Voici un exemple :
kd> !process 0 0
**** NT ACTIVE PROCESS DUMP ****
....
PROCESS ff779190 SessionId: 0 Cid: 04fc Peb: 7ffdf000 ParentCid: 0394
DirBase: 098fd000 ObjectTable: e1646b30 TableSize: 8.
Image: MyApp.exe
Étant donné que la base de répertoires est 0x098FD000, son PFN est 0x098FD.
kd> !vtop 98fd 12f980
Pdi 0 Pti 12f
0012f980 09de9000 pfn(09de9)
Notez que les trois zéros à la fin sont facultatifs. L’extension !vtop affiche l’index du répertoire de pages (PDI), l’index de la table de pages (PTI), l’adresse virtuelle que vous avez initialement entrée, l’adresse physique du début de la page physique, et le numéro de cadre de page (PFN) de l’entrée de table de pages (PTE).
Si vous souhaitez convertir l’adresse virtuelle 0x0012F980 en une adresse physique, vous devez simplement prendre les trois derniers chiffres hexadécimaux (0x980) et les ajouter à l’adresse physique du début de la page (0x09DE9000). Cela donne l’adresse physique 0x09DE9980.
Si vous oubliez de supprimer les trois zéros et de passer la base du répertoire complète à !vtop au lieu du PFN, les résultats seront généralement corrects. C’est parce que lorsque !vtop reçoit un nombre trop grand pour être un PFN, il le décale de douze bits vers la droite et utilise ce nombre à la place :
kd> !vtop 98fd 12f980
Pdi 0 Pti 12f
0012f980 09de9000 pfn(09de9)
kd> !vtop 98fd000 12f980
Pdi 0 Pti 12f
0012f980 09de9000 pfn(09de9)
Cependant, il est préférable d’utiliser toujours le PFN, car certaines valeurs de base de répertoire ne seront pas converties de cette manière.