!ricerca

L'estensione !search cerca nelle pagine nella memoria fisica i dati di dimensioni del puntatore corrispondenti ai criteri specificati.

Sintassi

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

Parametri

-s
Fa sì che gli errori di controllo dei simboli vengano ignorati durante la ricerca. Ciò è utile se si ricevono troppi "simboli non corretti per gli errori del kernel".

-p
Fa sì che il valore di Data venga interpretato come valore a 32 bit, impedendo qualsiasi estensione del segno.

Dati
Specifica i dati da cercare. I dati devono essere le dimensioni di un puntatore nel sistema di destinazione (32 bit o 64 bit). Viene sempre visualizzata una corrispondenza esatta per il valore di Dati . Vengono visualizzate anche altre corrispondenze, a seconda del valore di Delta. Per informazioni dettagliate, vedere la sezione Osservazioni di seguito.

Delta
Specifica la differenza consentita tra un valore in memoria e il valore di Data. Per informazioni dettagliate, vedere la sezione Osservazioni di seguito.

StartPFN
Specifica il numero di frame di pagina (PFN) dell'inizio dell'intervallo da cercare. Se questa operazione viene omessa, la ricerca inizia nella pagina fisica più bassa.

EndPFN
Specifica il numero di frame di pagina (PFN) della fine dell'intervallo da cercare. Se questa operazione viene omessa, la ricerca termina nella pagina fisica più alta.

-?
Visualizza la Guida per questa estensione nella finestra Comando debugger.

DLL

Kdexts.dll

Informazioni aggiuntive

Per altri modi per visualizzare e cercare memoria fisica, vedere Lettura e scrittura di memoria.

Osservazioni:

Se vengono specificati StartPFN e EndPFN , questi vengono acquisiti come numeri di frame di pagina dell'inizio e della fine dell'intervallo nella memoria fisica da cercare. Per una spiegazione dei numeri di frame di pagina, vedere Conversione di indirizzi virtuali in indirizzi fisici. Se StartPFN e EndPFN vengono omessi, viene eseguita la ricerca di tutta la memoria fisica.

Vengono visualizzati tutti i riscontri.

L'estensione !search cercherà tutta la memoria nell'intervallo di pagine specificato ed esaminerà ogni valore allineato ULONG_PTR. Vengono visualizzati i valori che soddisfano almeno uno dei criteri seguenti:

  • Il valore corrisponde esattamente a Data .

  • Se Delta è 0 o omesso: il valore è diverso da Data per un singolo bit.

  • Se Delta è diverso da zero: il valore è diverso da Data per al massimo Delta. In altre parole, il valore si trova nell'intervallo [Data - Delta, Data + Delta].

  • Se Delta è diverso da zero: il valore è diverso dal numero più basso nell'intervallo (Data - Delta) di un singolo bit.

Nella maggior parte dei casi, i dati specificano un indirizzo a cui si è interessati, ma è possibile specificare qualsiasi ULONG_PTR dati di dimensioni.

Poiché le strutture del motore di ricerca del debugger risiedono in memoria nel computer di destinazione, se si esegue una ricerca in tutta la memoria (o in qualsiasi intervallo contenente queste strutture) verranno visualizzate corrispondenze nell'area in cui si trovano le strutture stesse. Se è necessario eliminare queste corrispondenze, eseguire una ricerca di un valore casuale; indicherà dove si trovano le strutture di ricerca del debugger.

Di seguito sono riportati alcuni esempi. Di seguito viene eseguita una ricerca nella pagina della memoria con 0x237D PFN per i valori compresi tra 0x80001230 e 0x80001238, inclusi:

kd> !search 80001234 4 237d 237d 

Di seguito verranno eseguite ricerche nelle pagine di memoria che vanno da PFN 0x2370 a 0x237F per i valori che si trovano all'interno di un bit di 0x0F100F0F. Le corrispondenze esatte sono indicate in grassetto; gli altri sono disattivati di un bit:

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.

Le colonne nella visualizzazione sono le seguenti: Pfn è il numero di frame di pagina (PFN) della pagina; Offset è l'offset in tale pagina; Hit è il valore in corrispondenza dell'indirizzo; Va è l'indirizzo virtuale mappato a questo indirizzo fisico (se esiste e può essere determinato); Pte è la voce della tabella di pagina (PTE).

Per calcolare l'indirizzo fisico, spostare il pfn a sinistra tre cifre esadecimali (12 bit) e aggiungere l'offset. Ad esempio, l'ultima riga della tabella è l'indirizzo virtuale 0x0237D000 + 0x428 = 0x0237D428.