Compartilhar via


!vtop

A extensão !vtop converte um endereço virtual no endereço físico correspondente e exibe outras informações de tabela de página e diretório de página.

Sintaxe

!vtop PFN VirtualAddress 
!vtop 0 VirtualAddress 

Parâmetros

DirBase
Especifica a base de diretório do processo. Cada processo tem seu próprio espaço de endereço virtual. Use a extensão !process para determinar a base de diretório de um processo.

PFN
Especifica o número de quadros de página (PFN) da base de diretório do processo.

0
Faz com que !vtop use o contexto do processo atual para a conversão de endereços.

Endereço virtual
Especifica o endereço virtual cuja página é desejada.

DLL

Kdexts.dll

Informações Adicionais

Para conhecer outros métodos de obter esses resultados, consulte Convertendo endereços virtuais em endereços físicos. Consulte também !ptov. Para obter informações sobre tabelas de página e diretórios de página, consulte Microsoft Windows Internals, de Mark Russinovich e David Solomon.

Comentários

Para usar esse comando, primeiro use a extensão !process para determinar a base de diretório do processo. O número de quadros de página (PFN) dessa base de diretório pode ser encontrado removendo os três zeros hexadecimais à direita (ou seja, deslocando o número 12 bits para a direita).

Este é um exemplo:

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

Como a base de diretório é 0x098FD000, o PFN é 0x098FD.

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

Observe como os três zeros à direita são opcionais. A extensão !vtop exibe o índice de diretórios de página (PDI), o índice de tabelas de página (PTI), o endereço virtual que você digitou originalmente, o endereço físico do início da página física e o número de quadros de página (PFN) da entrada de tabela de página (PTE).

Se você quiser converter o endereço virtual 0x0012F980 em um endereço físico, basta pegar os últimos três dígitos hexadecimais (0x980) e adicioná-los ao endereço físico do início da página (0x09DE9000). Isso resulta no endereço físico 0x09DE9980.

Se você esquecer de remover os três zeros e passar a base de diretório completa para !vtop em vez do PFN, os resultados geralmente estarão corretos. Isso ocorre porque, quando !vtop recebe um número muito grande para ser um PFN, ele o desloca para a direita doze bits e usa esse número:

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

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

No entanto, é melhor sempre usar o PFN porque alguns valores da base de diretório não serão convertidos dessa maneira.