Freigeben über


!vtop

Die Erweiterung !vtop wandelt eine virtuelle Adresse in die entsprechende physikalische Adresse um und zeigt weitere Informationen zur Seitentabelle und zum Seitenverzeichnis an.

Syntax

!vtop PFN VirtualAddress 
!vtop 0 VirtualAddress 

Parameter

DirBase
Gibt die Verzeichnisbasis für den Prozess an. Jeder Prozess hat seinen eigenen virtuellen Adressraum. Verwenden Sie die Erweiterung !process, um die Verzeichnisbasis für einen Prozess zu bestimmen.

PFN
Gibt die Kachelnummer (PFN) der Verzeichnisbasis für den Prozess an.

0
Bewirkt, dass !vtop den aktuellen Prozesskontext für die Adressübersetzung verwendet.

VirtualAddress
Gibt die virtuelle Adresse an, deren Seite gewünscht wird.

DLL

Kdexts.dll

Zusätzliche Informationen

Weitere Methoden, um diese Ergebnisse zu erzielen, finden Sie unter Konvertieren virtueller Adressen in physikalische Adressen. Siehe auch !ptov. Informationen über Seitentabellen und Seitenverzeichnisse finden Sie unter Microsoft Windows Internals, von Mark Russinovich und David Solomon.

Hinweise

Um diesen Befehl zu verwenden, verwenden Sie zunächst die Erweiterung !process, um die Verzeichnisbasis des Prozesses zu ermitteln. Die Kachelnummer (PFN) dieser Verzeichnisbasis lässt sich ermitteln, indem die drei hinteren hexadezimalen Nullen entfernt werden (mit anderen Worten, indem die Zahl um 12 Bit nach rechts verschoben wird).

Hier ist ein Beispiel:

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

Da die Verzeichnisbasis 0x098FD000 ist, lautet die PFN 0x098FD.

kd> !vtop 98fd 12f980
Pdi 0 Pti 12f
0012f980 09de9000 pfn(09de9)

Beachten Sie, dass die drei Nullen am Ende optional sind. Die Erweiterung !vtop zeigt den Seitenverzeichnisindex (PDI), den Seitentabellenindex (PTI), die ursprünglich eingegebene virtuelle Adresse, die physikalische Adresse des Anfangs der physikalischen Seite und die Kachelnummer (PFN) des Seitentabelleneintrags (PTE) an.

Wenn Sie die virtuelle Adresse 0x0012F980 in eine physikalische Adresse umwandeln wollen, müssen Sie einfach die letzten drei hexadezimalen Ziffern (0x980) zur physikalischen Adresse am Anfang der Seite (0x09DE9000) addieren. Dies ergibt die physikalische Adresse 0x09DE9980.

Wenn Sie vergessen, die drei Nullen zu entfernen, und statt der PFN die vollständige Verzeichnisbasis an !vtop übergeben, sind die Ergebnisse normalerweise korrekt. Wenn !vtop eine Zahl empfängt, die für eine PFN zu groß ist, verschiebt es sie um zwölf Bits nach rechts und verwendet stattdessen diese Zahl:

kd> !vtop 98fd 12f980
Pdi 0 Pti 12f
0012f980 09de9000 pfn(09de9)

kd> !vtop 98fd000 12f980
Pdi 0 Pti 12f
0012f980 09de9000 pfn(09de9)

Es ist jedoch besser, immer die PFN zu verwenden, da einige Verzeichnisbasiswerte auf diese Weise nicht umgewandelt werden.