Condividi tramite


!pozza

L'estensione !pool visualizza informazioni su un'allocazione del pool specifica o sull'intero pool a livello di sistema.

!pool [Address [Flags]]

Parametri

Indirizzo
Specifica la voce del pool da visualizzare. Se Address è -1, questo comando visualizza informazioni su tutti gli heap nel processo.

Se Address è 0 o viene omesso, questo comando visualizza informazioni sull'heap del processo.

Bandiere
Specifica il livello di dettaglio da utilizzare. Può trattarsi di qualsiasi combinazione dei valori di bit seguenti; il valore predefinito è zero:

Bit 0 (0x1)
Fa sì che la visualizzazione includa il contenuto del pool, non solo le intestazioni del pool.

Bit 1 (0x2)
Fa in modo che la visualizzazione elimina le informazioni sull'intestazione del pool per tutti i pool, ad eccezione di quella che contiene effettivamente l'indirizzo specificato.

Bit 31 (0x80000000)
Elimina la descrizione del tipo di pool e del tag del pool nella visualizzazione.

DLL

Kdexts.dll

Informazioni aggiuntive

Per informazioni sui pool di memoria, vedere la documentazione di Windows Driver Kit (WDK) e microsoft Windows Internals, di Mark Russinovich e David Solomon.

Osservazioni:

In Windows XP e versioni successive di Windows, l'estensione !pool visualizza il tag del pool associato a ogni allocazione. Viene visualizzato anche il proprietario del tag del pool. Questa visualizzazione si basa sul contenuto del file di pooltag.txt. Questo file si trova nella sottodirectory di valutazione dell'installazione degli strumenti di debug per Windows. Se si desidera , è possibile modificare questo file per aggiungere tag di pool aggiuntivi pertinenti al progetto.

Avviso Se si installa una versione aggiornata di Strumenti di debug per Windows nella stessa directory della versione corrente, sovrascrive tutti i file in tale directory, incluso pooltag.txt. Se si modifica o si sostituisce il file di pooltag.txt di esempio, assicurarsi di salvarla in una directory diversa. Dopo aver reinstallato i debugger, è possibile copiare il pooltag.txt salvato sulla versione predefinita.

Se l'estensione !pool segnala il danneggiamento del pool, è consigliabile usare !poolval per indagare.

Ecco un esempio. Se Address specifica 0xE1001050, vengono visualizzate le intestazioni di tutti i pool in questo blocco e 0xE1001050 stesso viene contrassegnato con un asterisco (*).

kd> !pool e1001050 
 e1001000 size:   40 previous size:    0  (Allocated)  MmDT
 e1001040 size:   10 previous size:   40  (Free)       Mm  
*e1001050 size:   10 previous size:   10  (Allocated) *ObDi
 e1001060 size:   10 previous size:   10  (Allocated)  ObDi
 e1001070 size:   10 previous size:   10  (Allocated)  Symt
 e1001080 size:   40 previous size:   10  (Allocated)  ObDm
 e10010c0 size:   10 previous size:   40  (Allocated)  ObDi
.....

In questo esempio la colonna più a destra mostra il tag del pool. La colonna a sinistra di questo indica se il pool è libero o allocato.

Il comando seguente mostra le intestazioni del pool e il contenuto del pool:

kd> !pool e1001050 1
 e1001000 size:   40 previous size:    0  (Allocated)  MmDT
 e1001008  ffffffff 0057005c 004e0049 004f0044
    e1001018  ffffffff 0053005c 00730079 00650074

 e1001040 size:   10 previous size:   40  (Free)       Mm  
 e1001048  ffffffff e1007ba8 e1501a58 01028101
    e1001058  ffffffff 00000000 e1000240 01028101

*e1001050 size:   10 previous size:   10  (Allocated) *ObDi
 e1001058  ffffffff 00000000 e1000240 01028101
    e1001068  ffffffff 00000000 e10009c0 01028101

 e1001060 size:   10 previous size:   10  (Allocated)  ObDi
 e1001068  ffffffff 00000000 e10009c0 01028101
    e1001078  ffffffff 00000000 00000000 04028101

......