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.