次の方法で共有


!ptov

!ptov 拡張機能は、特定のプロセスの物理アドレスから仮想アドレスへのマップ全体を表示します。

!ptov DirBase

パラメーター

DirBase
プロセスのディレクトリ ベースを指定します。 ディレクトリ ベースを特定するには、!process コマンドを使用し、DirBase に表示される値を確認します。

DLL

Kdexts.dll

解説

次に例を示します。 まず .プロセス そして !プロセス で、現在のプロセスのディレクトリベースを決定する:

1: kd> .process
Implicit process is now 852b4040
1: kd> !process 852b4040 1
PROCESS 852b4040  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 00185000  ObjectTable: 83203000  HandleCount: 663.
    Image: System
    ...

この場合、ディレクトリ ベースは 0x00185000 です。 このアドレスを !ptov に渡します。

1: kd> !ptov 185000
X86PtoV: pagedir 185000, PAE enabled.
15e11000 10000
549e6000 20000
...
60a000 210000
40b000 211000
...
54ad3000 25f000
548d3000 260000
...
d71000 77510000
...

左の列の数字は、このプロセスにマッピングされている各メモリ ページの物理アドレスです。 右側の列の数字は、これらがマッピングされている仮想アドレスです。

全体表示は非常に長くなります。

以下は 64 ビットの例です。

3: kd> .process
Implicit process is now fffffa80`0361eb30
3: kd> !process fffffa80`0361eb30 1
PROCESS fffffa800361eb30
    SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 00187000  ObjectTable: fffff8a000002870  HandleCount: 919.
    Image: System
    ...
3: kd> !ptov 187000
Amd64PtoV: pagedir 187000
00000001`034fb000 1d0000
a757c000 1d1000
00000001`0103d000 1d2000
c041e000 1d3000
...
2ed6f000 fffff680`00001000
00000001`13939000 fffff680`00003000
ceefb000 fffff680`00008000
...

ディレクトリ ベースは、仮想アドレス変換で使用される最初のテーブルの物理アドレスです。 このテーブルは、ターゲット・オペレーティング・システムのビット数や、ターゲット・オペレーティング・システムでPAE (Physical Address Extension) が有効になっているかどうかによって、名前が異なります。

64ビットWindowsの場合、ディレクトリベースはページマップレベル4 (PML4) テーブルの物理アドレスである。 PAEが有効な32ビットWindowsの場合、ディレクトリベースはページ・ディレクトリ・ポインタ (PDP) テーブルの物理アドレスである。 PAEが無効な32ビットWindowsの場合、ディレクトリbasはページディレクトリ (PD) テーブルの物理アドレスである。

関連トピックについては、「!vtop」および「仮想アドレスから物理アドレスへの変換」を参照してください。 仮想アドレス変換の詳細については、Mark Russinovich および David Solomon による「Microsoft Windows Internals」を参照してください。