!pte

!pte 拡張機能は、指定されたアドレスのページ テーブル エントリ (PTE) とページ ディレクトリ エントリ (PDE) を表示します。

構文

!pte VirtualAddress 
!pte PTE 
!pte LiteralAddress 1 

パラメーター

VirtualAddress
ページ テーブルを必要とする対象の仮想アドレスを指定します。

PTE
実際の PTE のアドレスを指定します。

LiteralAddress **** 1
実際の PTE または PDE のアドレスを指定します。

DLL

Kdexts.dll

追加情報

ページ テーブルとページ ディレクトリの詳細、およびステータス ビットの説明については、Mark Russinovich および David Solomon による「Microsoft Windows Internals」を参照してください。

解説

パラメーターが 1 つ指定されており、このパラメーターが、ページ テーブルが保存されているメモリ領域のアドレスである場合、デバッガーはこれを PTE パラメーターとして扱います。 このパラメーターは、対象の PTE の実際のアドレスとして処理され、デバッガーはこの PTE および対応する PDE を表示します。

パラメーターが 1 つ指定されており、このパラメーターがこの領域内のアドレスではない場合、デバッガーはこれを VirtualAddress パラメーターとして扱います。 このアドレスのマッピングを保持する PTE および PDE が表示されます。

パラメーターが 2 つ指定され、2 つ目のパラメーターが 1 (またはその他の小さな数値) の場合、デバッガーは 1 つ目のパラメーターを LiteralAddress として扱います。 このアドレスはPTEの実際のアドレスとして解釈され、またPDEの実際のアドレスとしても解釈され、対応する (場合によっては無効な) データが表示される。

(x86 または x64 ターゲット コンピューターのみ) パラメーターが 2 つ指定され、2 つ目のパラメーターが 1 つ目のパラメーターより大きい場合、デバッガーは 2 つのパラメーターを StartAddress および EndAddress として扱います。 次にコマンドは、指定されたメモリ範囲内の各ページの PTE を表示します。

すべてのシステム PTE のリストについては、!sysptes 拡張機能を使用してください。

以下はx86ターゲットコンピュータの例である:

kd> !pte 801544f4
801544F4  - PDE at C0300800        PTE at C0200550
          contains 0003B163      contains 00154121
        pfn 3b G-DA--KWV    pfn 154 G--A--KRV

この例の最初の行には、調査対象の仮想アドレスが再表示されています。 このアドレスの仮想物理マッピングに関する情報と共に、PDE と PTE の仮想アドレスが示されます。

2 行目は、PDE と PTE の実際の内容です。

3行目は、これらの内容を解析し、ページフレーム番号 (PFN) とステータスビットに分割する。

PFN の解釈方法および使用方法については、「!pfn」拡張機能または「仮想アドレスから物理アドレスへの変換」のセクションを参照してください。

x86 または x64 ターゲット コンピューター上の PDE および PTE のステータス ビットを次の表に示します。 !pte 表示では、これらのビットが大文字またはダッシュで示され、追加情報も追加されます。

ビット 設定時の表示 クリア時の表示 意味

0x200

C

-

コピー オン ライト。

0x100

G

-

グローバル。

0x80

L

-

大きなページ。 これは PDE でのみ発生し、PTE では発生しません。

0x40

D

-

ダーティ。

0x20

A

-

アクセス済み。

0x10

N

-

キャッシュが無効。

0x8

T

-

ライトスルー。

0x4

U

K

所有者 (ユーザーモードまたはカーネルモード)。

0x2

W

R

書き込み可能または読み取り専用。 マルチプロセッサ コンピューターと、Windows Vista 以降が動作するコンピューターのみ。

0x1

V

有効。

E

-

実行可能なページ。 多くの x86 システムなど、ハードウェア実行/非実行ビットをサポートしていないプラットフォームでは、常に E が表示されます。