!search

について !search エクステンションは、指定された条件に一致するポインタサイズのデータを物理メモリ上のページから検索する。

構文

!search [-s] [-p] Data [ Delta [ StartPFN [ EndPFN ]]] 
!search -?

パラメーター

-s
検索中のシンボルチェックのエラーを無視する。 これは、"incorrect symbols for kernel"(カーネルのシンボルが正しくありません)というエラーが多発する場合に役立つ。

-p
の値が Data は32ビット値として解釈され、符号の拡張はできない。

Data
検索するデータを指定する。 Data は、ターゲット・システム上のポインタのサイズ(32ビットまたは64ビット)でなければならない。 の値と完全に一致する。 Data は常に表示される。 の値によって、他の試合も表示される Delta; 詳細は以下の備考欄を参照のこと。

Delta
メモリ上の値と データ. 詳細は以下の備考欄を参照。

StartPFN
検索する範囲の先頭のページフレーム番号(PFN)を指定する。 これが省略された場合、検索は物理的に一番下のページから始まる。

EndPFN
検索する範囲の終端のページフレーム番号(PFN)を指定する。 これが省略された場合、検索は物理的に最も高いページで終了する。

-?
この拡張機能のヘルプをデバッガコマンドウィンドウに表示します。

DLL

Kdexts.dll

追加情報

物理メモリを表示したり検索したりするその他の方法については、以下を参照のこと。 メモリの読み書き.

解説

もし StartPFN そして EndPFN が指定された場合、これらは検索される物理メモリ上の範囲の開始と終了のページフレーム番号とみなされる。 ページ枠番号の説明は 仮想アドレスから物理アドレスへの変換. もし StartPFN and EndPFN を省略すると、すべての物理メモリが検索される。

すべてのヒット曲が表示される。

について !search 拡張は、指定されたページ範囲内のすべてのメモリーを検索し、ULONG_PTRで整列された各値を調べる。 以下の基準の少なくとも1つを満たす値が表示される:

  • この値は データ まさに.

  • デルタが0または省略された場合:値は Data 1ビットの差で。

  • デルタがゼロでない場合: とは異なる。 Data 最大で Delta. 言い換えれば、値は[データ-デルタ、データ+デルタ]の範囲にある。

  • デルタがゼロでない場合: デルタがゼロでない場合:その値は、範囲(データ-デルタ)の最低数値と1ビット異なる。

ほとんどの場合だ、 Data には目的のアドレスが指定されるが、ULONG_PTRサイズのデータなら何でも指定できる。

デバッガの検索エンジンの構造体はターゲット・コンピューター上のメモリーに存在するため、メモリー全体(またはこれらの構造体を含む任意の範囲)を検索すると、構造体そのものが配置されている領域でマッチが表示されます。 これらのマッチを除外する必要がある場合は、ランダムな値で検索を行う。

いくつか例を挙げます。 以下は、PFN 0x237D のメモリページで、0x80001230 から 0x80001238 までの値を検索します:

kd> !search 80001234 4 237d 237d 

以下は、PFN 0x2370 から 0x237F までのメモリページで、0x0F100F0F の 1 ビット以内の値を検索します。 完全に一致するものは太字で示し、それ以外は1ビットずれている:

kd> !search 0f100f0f 0 2370 237f
Searching PFNs in range 00002370 - 0000237F for [0F100F0F - 0F100F0F]

Pfn      Offset   Hit      Va       Pte      
- - - - - - - - - - - - - - - - - - -
0000237B 00000368 0F000F0F 01003368 C0004014 
0000237C 00000100 0F100F0F 01004100 C0004014 
0000237D 000003A8 0F100F0F 010053A8 C0004014 
0000237D 000003C8 0F100F8F 010053C8 C0004014 
0000237D 000003E8 0F100F0F 010053E8 C0004014 
0000237D 00000408 0F100F0F 01005408 C0004014 
0000237D 00000428 0F100F8F 01005428 C0004014 
Search done.

表示の列は以下の通り: Pfn はページのページフレーム番号(PFN); オフセット はそのページのオフセット; Hit is the value at that address; Va は、この物理アドレスにマッピングされた仮想アドレスである(これが存在し、決定できる場合); Pte はページテーブルエントリー(PTE)である。

物理アドレスを計算するには、PFNを16進数で左3桁(12ビット)シフトし、オフセットを加えます。 例えば、表の最後の行は、仮想アドレス0x0237D000 + 0x428 = 0x0237D428である。