Freigeben über


!suchen

Die Erweiterung !search durchsucht Seiten im physischen Speicher nach Daten in Zeigergröße, die den angegebenen Kriterien entsprechen.

Syntax

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

Parameter

-s
Bewirkt, dass Symbolprüfungsfehler bei der Suche ignoriert werden. Dies ist nützlich, wenn Sie zu viele „falsche Symbole für den Kernel“-Fehler erhalten.

-p
Bewirkt, dass der Wert von Data als 32-Bit-Wert interpretiert wird, wodurch eine Vorzeichenerweiterung verhindert wird.

Daten
Gibt die Daten an, nach denen gesucht werden soll. Die Daten müssen die Größe eines Zeigers auf dem Zielsystem haben (32 Bit oder 64 Bit). Eine genaue Übereinstimmung mit dem Wert von Data wird immer angezeigt. Je nach dem Wert von Delta werden auch andere Übereinstimmungen angezeigt; Einzelheiten finden Sie im Abschnitt Bemerkungen weiter unten.

Delta
Gibt die zulässige Differenz zwischen einem Wert im Speicher und dem Wert von Data an. Nähere Informationen finden Sie im Abschnitt Bemerkungen weiter unten.

StartPFN
Gibt die Kachelnummer (PFN) des Beginns des zu durchsuchenden Bereichs an. Wird diese Angabe weggelassen, beginnt die Suche auf der untersten physischen Seite.

EndPFN
Gibt die Kachelnummer (PFN) des Endes des zu durchsuchenden Bereichs an. Wird diese Angabe weggelassen, endet die Suche auf der obersten physischen Seite.

-?
Zeigt die Hilfe für diese Erweiterung im Debugger-Befehlsfenster an.

DLL

Kdexts.dll

Zusätzliche Informationen

Weitere Möglichkeiten zum Anzeigen und Durchsuchen des physischen Speichers finden Sie unter Lesen und Schreiben von Speicher.

Hinweise

Wenn StartPFN und EndPFN angegeben sind, werden diese als Kachelnummern für den Anfang und das Ende des zu durchsuchenden Bereichs im physischen Speicher verwendet. Eine Erklärung der Kachelnummern finden Sie unter Konvertieren von virtuellen Adressen in physische Adressen. Wenn StartPFN und EndPFN weggelassen werden, wird der gesamte physische Speicher durchsucht.

Alle Treffer werden angezeigt.

Die Erweiterung !search durchsucht den gesamten Speicher im angegebenen Seitenbereich und untersucht jeden ULONG_PTR-ausgerichteten Wert. Es werden Werte angezeigt, die mindestens eines der folgenden Kriterien erfüllen:

  • Der Wert entspricht genau Data.

  • Wenn Delta 0 ist oder weggelassen wird: Der Wert unterscheidet sich von Data um ein einziges Bit.

  • Wenn Delta ungleich Null ist: Der Wert unterscheidet sich von Data um höchstens Delta. Mit anderen Worten: Der Wert liegt im Bereich [Data - Delta, Data + Delta].

  • Wenn Delta ungleich Null ist: Der Wert unterscheidet sich von der niedrigsten Zahl im Bereich (Data - Delta) um ein einziges Bit.

In den meisten Fällen wird Data eine Adresse angeben, an der Sie interessiert sind, aber es können beliebige Daten der Größe ULONG_PTR angegeben werden.

Da sich die Strukturen der Debugger-Suchmaschine im Speicher des Zielcomputers befinden, werden bei einer Suche im gesamten Speicher (oder in einem Bereich, der diese Strukturen enthält) Übereinstimmungen in dem Bereich angezeigt, in dem sich die Strukturen selbst befinden. Wenn Sie diese Übereinstimmungen ausschließen müssen, führen Sie eine Suche nach einem Zufallswert durch; dies zeigt an, wo sich die Suchstrukturen des Debuggers befinden.

Nachfolgend finden Sie einige Beispiele. Im Folgenden wird die Speicherseite mit der PFN 0x237D nach Werten zwischen 0x80001230 und 0x80001238 (einschließlich) durchsucht:

kd> !search 80001234 4 237d 237d 

Im Folgenden werden die Speicherseiten im Bereich von PFN 0x2370 bis 0x237F nach Werten durchsucht, die innerhalb eines Bits von 0x0F100F0F liegen. Die exakten Übereinstimmungen sind fett gedruckt; die anderen weichen um ein Bit ab:

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.

Die Spalten der Anzeige sehen wie folgt aus: Pfn ist die Kachelnummer (PFN) der Seite; Offset ist der Offset auf dieser Seite; Hit ist der Wert an dieser Adresse; Va ist die virtuelle Adresse, die dieser physischen Adresse zugeordnet ist (falls vorhanden und ermittelbar); Pte ist der Seitentabelleneintrag (PTE).

Zur Berechnung der physischen Adresse wird die PFN um drei hexadezimale Stellen (12 Bit) nach links verschoben und der Offset addiert. Die letzte Zeile in der Tabelle ist zum Beispiel die virtuelle Adresse 0x0237D000 + 0x428 = 0x0237D428.