Compartilhar via


Exemplo 14: Configurando o pool especial

A partir do Windows Vista, você pode definir o recurso Pool Especial como uma configuração de sinalizador de kernel ou como uma configuração do Registro. Se você configurá-lo como uma configuração de sinalizador de kernel (tempo de execução), não será necessário reiniciar o computador para tornar a alteração eficaz. Em versões anteriores do Windows, o Pool Especial está disponível apenas como uma configuração do Registro.

Além disso, a partir do Windows Vista, você pode definir e configurar o recurso pool especial da linha de comando. Em versões anteriores do Windows, você pode definir e configurar o recurso Pool Especial somente na caixa de diálogo Sinalizadores Globais.

Solicitar pool especial por marca de pool sem reinicialização

O comando a seguir solicita um pool especial para todas as alocações com a marca de pool Tag1 . Essa configuração se tornará efetiva imediatamente, mas será perdida se você desligar ou reiniciar o Windows.

Esse comando usa o parâmetro /k para especificar uma configuração de sinalizador de kernel (tempo de execução) e a abreviação +spp para definir uma solicitação de pool especial.

gflags /k +spp Tag1

O Gflags responde imprimindo:

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

Observe que a solicitação de alocação de pool especial não é uma configuração de sinalizador de kernel e não é refletida no valor das configurações do kernel.

Além disso, uma solicitação de alocação de pool especial não altera o valor da configuração de estouro (0x1) ou subexecutação (0x0) para o pool especial. Para alterar de estouros, o padrão, para subexecutar, use a Caixa de Diálogo Gflags. Para obter informações, consulte Detectando estouros e subexecutações.

Não é possível exibir a marca do pool na linha de comando. Para verificar se a marca do pool é uma configuração de kernel, use a Caixa de Diálogo Gflags.

Solicitar pool especial por marca de pool no registro

O comando a seguir solicita um pool especial para todas as alocações com a marca de pool Tag1 . Como essa configuração é armazenada no Registro, você deve reiniciar o computador para torná-lo eficaz, mas ele permanece eficaz até que você o altere.

Esse comando usa o parâmetro /r para especificar uma configuração do Registro e a abreviação +spp para definir uma solicitação de pool especial.

gflags /r +spp Tag1

O Gflags responde imprimindo:

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

Observe que a solicitação de alocação de pool especial não é uma configuração de sinalizador do Registro e não é refletida no valor de configurações do Registro.

Além disso, uma solicitação de alocação de pool especial não altera o valor da configuração de estouro (0x1) ou subexecutação (0x0) para o pool especial. Para alterar de estouros, o padrão, para subexecutar, use a Caixa de Diálogo Gflags. Para obter informações, consulte Detectando estouros e subexecutações.

Para verificar se o valor foi adicionado ao registro, use Reg ou Regedit para exibir o valor da entrada PoolTag na chave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management .

Por exemplo:

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

Solicitar Pool Especial por tamanho sem reinicialização

O comando a seguir solicita um pool especial para alocações de 1 a 8 bytes em um computador x86 com um PAGE_SIZE de 0x1000 e granularidade de alocação de 8 bytes.

Esse comando usa o parâmetro /k para especificar uma configuração de sinalizador de kernel (tempo de execução) e a abreviação +spp para definir uma solicitação de pool especial. O valor de tamanho é precedido por 0x para indicar que é um tamanho e não uma marca de pool.

O valor, 0x10, é calculado adicionando a granularidade de alocação (8 bytes) ao maior tamanho do intervalo (8 bytes) para um total de 16 bytes (0x10). Para obter ajuda para determinar o valor correto a ser inserido, confira "Como selecionar um tamanho de alocação" no Pool Especial.

gflags /k +spp 0x10

O Gflags responde imprimindo:

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

Novamente, a solicitação de alocação de pool especial não é uma configuração de sinalizador de kernel e não é refletida no valor das configurações do kernel.

Além disso, uma solicitação de alocação de pool especial não altera o valor da configuração de estouro (0x1) ou subexecutação (0x0) para o pool especial. Para alterar de estouros, o padrão, para subexecutar, use a Caixa de Diálogo Gflags. Para obter informações, consulte Detectando estouros e subexecutações.

Solicitar pool especial por tamanho no registro

O comando a seguir solicita um pool especial para alocações de 1024 a 1040 bytes em um computador x64 com um PAGE_SIZE de 0x1000 e granularidade de alocação de 16 bytes.

Esse comando usa o parâmetro /r para especificar uma configuração de registro em todo o sistema e a abreviação +spp para definir uma solicitação de pool especial. O valor de tamanho é precedido por 0x para indicar que é um tamanho e não uma marca de pool.

O valor, 0x420, é calculado adicionando a granularidade de alocação (16 bytes) ao maior tamanho do intervalo (1040 bytes) para um total de 1.056 bytes (0x420). Para obter ajuda para determinar o valor correto a ser inserido, confira "Como selecionar um tamanho de alocação" no Pool Especial.

gflags /r +spp 0x420

O Gflags responde imprimindo:

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

Novamente, a solicitação de alocação de pool especial não é uma configuração de sinalizador do Registro e não é refletida no valor de configurações do Registro.

Além disso, uma solicitação de alocação de pool especial não altera o valor da configuração de estouro (0x1) ou subexecutação (0x0) para o pool especial. Para alterar de estouros, o padrão, para subexecutar, use a Caixa de Diálogo Gflags. Para obter informações, consulte Detectando estouros e subexecutações.

Para verificar se o valor foi adicionado ao registro, use Reg ou Regedit para exibir o valor da entrada PoolTag na chave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management .

Por exemplo:

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

Cancelar uma solicitação de pool especial

O comando a seguir cancela uma solicitação para o Pool Especial como uma configuração de sinalizador de kernel (tempo de execução). O comando é o mesmo para uma solicitação por marca de pool ou por tamanho.

gflags /k -spp

O comando a seguir cancela uma solicitação para o Pool Especial como uma configuração do Registro. O comando é o mesmo para uma solicitação por marca de pool ou por tamanho.

gflags /r -spp

Quando o comando for bem-sucedido, o Gflags responderá imprimindo:

Special Pool value has been deleted.