Partager via


!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.