!vtop
La extensión !vtop convierte una dirección virtual en la dirección física correspondiente y muestra otra información de la tabla de páginas y del directorio de páginas.
Sintaxis
!vtop PFN VirtualAddress
!vtop 0 VirtualAddress
Parámetros
DirBase
Especifica el directorio base para el proceso. Cada proceso tiene su propio espacio de direcciones virtual. Utilice la extensión !process para determinar el directorio base de un proceso.
PFN
Especifica el número de marco de página (PFN) de la base del directorio para el proceso.
0
Hace que !vtop utilice el contexto de proceso actual para la traducción de direcciones.
VirtualAddress
Especifica la dirección virtual cuya página se desea.
Archivo DLL
Kdexts.dll
Información adicional
Si desea conocer otros métodos para lograr estos resultados, consulte Conversión de direcciones virtuales en direcciones físicas. Consulte también !ptov. Para obtener información sobre tablas de páginas y directorios de páginas, consulte Microsoft Windows Internals de Mark Russinovich y David Solomon.
Comentarios
Para utilizar este comando, utilice primero la extensión !process para determinar el directorio base del proceso. El número de marco de página (PFN) de esta base de directorio puede encontrarse eliminando los tres ceros hexadecimales del final (en otras palabras, desplazando a la derecha el número 12 bits).
Este es un ejemplo:
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 la base del directorio es 0x098FD000, su PFN es 0x098FD.
kd> !vtop 98fd 12f980
Pdi 0 Pti 12f
0012f980 09de9000 pfn(09de9)
Observe que los tres ceros finales son opcionales. La extensión !vtop muestra el índice del directorio de páginas (PDI), el índice de la tabla de páginas (PTI), la dirección virtual que había introducido originalmente, la dirección física del comienzo de la página física y el número de marco de página (PFN) de la entrada de la tabla de páginas (PTE).
Si desea convertir la dirección virtual 0x0012F980 en una dirección física, solo tiene que tomar los tres últimos dígitos hexadecimales (0x980) y sumarlos a la dirección física del principio de la página (0x09DE9000). Esto da la dirección física 0x09DE9980.
Si olvida eliminar los tres ceros y pasa la base de directorio completa a !vtop en lugar del PFN, los resultados serán generalmente correctos. Esto se debe a que cuando !vtop recibe un número demasiado grande para ser un PFN, lo desplaza a la derecha doce bits y utiliza ese número en su lugar:
kd> !vtop 98fd 12f980
Pdi 0 Pti 12f
0012f980 09de9000 pfn(09de9)
kd> !vtop 98fd000 12f980
Pdi 0 Pti 12f
0012f980 09de9000 pfn(09de9)
Sin embargo, es mejor utilizar siempre el PFN, ya que algunos valores base del directorio no se convertirán de esta manera.