Condividi tramite


!vtop

L'estensione !vtop converte un indirizzo virtuale nell'indirizzo fisico corrispondente e visualizza altre informazioni sulla tabella di pagine e sulla directory di pagine.

Sintassi

!vtop PFN VirtualAddress 
!vtop 0 VirtualAddress 

Parametri

DirBase
Specifica la base di directory per il processo. Ogni processo ha un proprio spazio indirizzi virtuale. Usare l'estensione !process per determinare la base di directory per un processo.

PFN
Specifica il numero di frame di pagina (PFN) della base di directory per il processo.

0
Fa sì che !vtop usi il contesto del processo corrente per la conversione degli indirizzi.

VirtualAddress
Specifica l'indirizzo virtuale di cui si desidera la pagina.

DLL

Kdexts.dll

Informazioni aggiuntive

Per altri metodi per ottenere questi risultati, vedere Conversione di indirizzi virtuali in indirizzi fisici. Vedi anche !ptov. Per informazioni sulle tabelle di pagine e sulle directory di pagine, vedere Microsoft Windows Internals, di Mark Russinovich e David Solomon.

Osservazioni:

Per usare questo comando, usare prima di tutto l'estensione !process per determinare la base di directory del processo. Il numero di frame di pagina (PFN) di questa base di directory è reperibile rimuovendo i tre zeri esadecimali finali (in altre parole, spostando a destra il numero a 12 bit).

Ecco un esempio:

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

Poiché la base di directory è 0x098FD000, il relativo pfn è 0x098FD.

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

Si noti che i tre zeri finali sono facoltativi. L'estensione !vtop visualizza l'indice della directory della pagina (PDI), l'indice della tabella di pagina (PTI), l'indirizzo virtuale di input originariamente, l'indirizzo fisico dell'inizio della pagina fisica e il numero di frame di pagina (PFN) della voce della tabella di pagina (PTE).

Se si desidera convertire l'indirizzo virtuale 0x0012F980 in un indirizzo fisico, è sufficiente prendere le ultime tre cifre esadecimali (0x980) e aggiungerle all'indirizzo fisico dell'inizio della pagina (0x09DE9000). In questo modo l'indirizzo fisico 0x09DE9980.

Se si dimentica di rimuovere i tre zeri e passare la base di directory completa a !vtop invece del pfn, i risultati saranno in genere corretti. Questo perché quando !vtop riceve un numero troppo grande per essere un PFN, sposta a destra dodici bit e usa invece quel numero:

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

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

Tuttavia, è preferibile usare sempre il pfn, perché alcuni valori di base della directory non verranno convertiti in questo modo.