Condividi tramite


Esempio 14: Configurazione di un pool speciale

A partire da Windows Vista, è possibile configurare la funzionalità Pool speciale come impostazione del flag del kernel o come impostazione del Registro di sistema. Se la si configura come impostazione del flag del kernel (runtime), non è necessario riavviare il computer per rendere effettiva la modifica. Nelle versioni precedenti di Windows, Il pool speciale è disponibile solo come impostazione del Registro di sistema.

Inoltre, a partire da Windows Vista, è possibile impostare e configurare la funzionalità Pool speciale dalla riga di comando. Nelle versioni precedenti di Windows è possibile impostare e configurare la funzionalità Pool speciale solo nella finestra di dialogo Flag globali.

Richiedere un pool speciale per tag del pool senza riavviare

Il comando seguente richiede un pool speciale per tutte le allocazioni con il tag del pool Tag1 . Questa impostazione diventa effettiva immediatamente, ma viene persa se si arresta o si riavvia Windows.

Questo comando usa il / k parametro per specificare un'impostazione del flag del kernel (runtime) e l'abbreviazione +spp per impostare una richiesta di pool speciale.

gflags /k +spp Tag1

Gflags risponde stampando:

Special Pool set to 0x31676154
PoolTagOverruns set to 0x1
Current Running Kernel Settings are: 00000000

Si noti che la richiesta di allocazione del pool speciale non è un'impostazione del flag del kernel e non si riflette nel valore delle impostazioni del kernel.

Inoltre, una richiesta speciale di allocazione del pool non modifica il valore dell'impostazione di overrun (0x1) o sottorun (0x0) per un pool speciale. Per passare da overruns, il valore predefinito, a underruns, usare la finestra di dialogo Gflags. Per informazioni, vedere Rilevamento di sovraccarichi e sottorun.

Non è possibile visualizzare il tag del pool nella riga di comando. Per verificare che il tag del pool sia un'impostazione del kernel, usare la finestra di dialogo Gflags.

Richiedere un pool speciale per tag del pool nel Registro di sistema

Il comando seguente richiede un pool speciale per tutte le allocazioni con il tag del pool Tag1 . Poiché questa impostazione viene archiviata nel Registro di sistema, è necessario riavviare il computer per renderla effettiva, ma rimane effettiva fino a quando non viene modificata.

Questo comando usa il /r parametro per specificare un'impostazione del Registro di sistema e l'abbreviazione +spp per impostare una richiesta di pool speciale.

gflags /r +spp Tag1

Gflags risponde stampando:

Special Pool set to 0x31676154
PoolTagOverruns set to 0x1
Current Boot Registry Settings are: 00000000

Si noti che la richiesta speciale di allocazione del pool non è un'impostazione del flag del Registro di sistema e non viene riflessa nel valore delle impostazioni del Registro di sistema.

Inoltre, una richiesta speciale di allocazione del pool non modifica il valore dell'impostazione di overrun (0x1) o sottorun (0x0) per un pool speciale. Per passare da overruns, il valore predefinito, a underruns, usare la finestra di dialogo Gflags. Per informazioni, vedere Rilevamento di sovraccarichi e sottorun.

Per verificare che il valore sia stato aggiunto al Registro di sistema, usare Reg o Regedit per visualizzare il valore della voce PoolTag nella chiave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management .

Ad esempio:

c:>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -v PoolTag
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
    PoolTag    REG_DWORD    0x31676154

Richiedere un pool speciale per dimensione senza riavviare

Il comando seguente richiede un pool speciale per le allocazioni da 1 a 8 byte in un computer x86 con un PAGE_SIZE di 0x1000 e granularità di allocazione di 8 byte.

Questo comando usa il / k parametro per specificare un'impostazione del flag del kernel (runtime) e l'abbreviazione +spp per impostare una richiesta di pool speciale. Il valore della dimensione è preceduto da 0x per indicare che si tratta di una dimensione e non di un tag del pool.

Il valore, 0x10, viene calcolato aggiungendo la granularità di allocazione (8 byte) alla dimensione più grande nell'intervallo (8 byte) per un totale di 16 byte (0x10). Per informazioni su come determinare il valore corretto da immettere, vedere "Selezione di dimensioni allocazione" in Pool speciale.

gflags /k +spp 0x10

Gflags risponde stampando:

Special Pool set to 0x10
PoolTagOverruns set to 0x1
Current Running Kernel Settings are: 00000000

Anche in questo caso, la richiesta di allocazione del pool speciale non è un'impostazione del flag del kernel e non si riflette nel valore delle impostazioni del kernel.

Inoltre, una richiesta speciale di allocazione del pool non modifica il valore dell'impostazione di overrun (0x1) o sottorun (0x0) per un pool speciale. Per passare da overruns, il valore predefinito, a underruns, usare la finestra di dialogo Gflags. Per informazioni, vedere Rilevamento di sovraccarichi e sottorun.

Richiedere un pool speciale per dimensione nel Registro di sistema

Il comando seguente richiede un pool speciale per le allocazioni da 1024 a 1040 byte in un computer x64 con una PAGE_SIZE di 0x1000 e granularità di allocazione di 16 byte.

Questo comando usa il / r parametro per specificare un'impostazione del Registro di sistema a livello di sistema e l'abbreviazione +spp per impostare una richiesta di pool speciale. Il valore della dimensione è preceduto da 0x per indicare che si tratta di una dimensione e non di un tag del pool.

Il valore, 0x420, viene calcolato aggiungendo la granularità di allocazione (16 byte) alla dimensione più grande nell'intervallo (1040 byte) per un totale di 1056 byte (0x420). Per informazioni su come determinare il valore corretto da immettere, vedere "Selezione di dimensioni allocazione" in Pool speciale.

gflags /r +spp 0x420

Gflags risponde stampando:

Special Pool set to 0x420
PoolTagOverruns set to 0x1
Current Boot Registry Settings are: 00000000

Anche in questo caso, la richiesta speciale di allocazione del pool non è un'impostazione del flag del Registro di sistema e non viene riflessa nel valore delle impostazioni del Registro di sistema.

Inoltre, una richiesta speciale di allocazione del pool non modifica il valore dell'impostazione di overrun (0x1) o sottorun (0x0) per un pool speciale. Per passare da overruns, il valore predefinito, a underruns, usare la finestra di dialogo Gflags. Per informazioni, vedere Rilevamento di sovraccarichi e sottorun.

Per verificare che il valore sia stato aggiunto al Registro di sistema, usare Reg o Regedit per visualizzare il valore della voce PoolTag nella chiave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management .

Ad esempio:

c:>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -v PoolTag
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
    PoolTag    REG_DWORD    0x420

Annullare una richiesta di pool speciale

Il comando seguente annulla una richiesta per il pool speciale come impostazione del flag del kernel (runtime). Il comando è lo stesso per una richiesta per tag del pool o per dimensione.

gflags /k -spp

Il comando seguente annulla una richiesta per Il pool speciale come impostazione del Registro di sistema. Il comando è lo stesso per una richiesta per tag del pool o per dimensione.

gflags /r -spp

Quando il comando ha esito positivo, Gflags risponde stampando:

Special Pool value has been deleted.