Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O recurso Pool Especial configura o Windows para solicitar alocações de memória de um pool de memória reservado quando a memória é alocada com uma marca de pool especificada ou está dentro de um intervalo de tamanho especificado.
Abbreviation |
spp |
Valor hexadecimal |
(Nenhum) |
Nome Simbólico |
(Nenhum) |
Destino |
Entrada do Registro em todo o sistema (Windows Vista e posterior) Entrada do registro em todo o sistema, sinalizador de kernel |
Selecionando um tag de pool
Ao solicitar um pool especial para um determinado pool tag, verifique se o driver ou outro programa em modo kernel utiliza um pool tag exclusivo.
Além disso, ao criar uma marca de pool (como ao usar ExAllocatePoolWithTag), considere inserir os caracteres da marca em ordem inversa. Por exemplo, se a tag for Fred, considere inseri-la como derF (0x64657246). As marcas de pool são armazenadas no registro e exibidas no depurador e em outras ferramentas na ordem inversa (inferior endian). Se você inseri-las em ordem inversa, elas serão exibidas em ordem correta (0x46726564)
Se você suspeitar que o driver está consumindo todo o pool especial, considere a possibilidade de usar várias tags de pool em seu código. Em seguida, você pode testar o driver várias vezes, atribuindo um pool especial a uma tag de pool em cada teste.
Além disso, selecione uma marca de pool com um valor hexadecimal maior que o tamanho da página do sistema. Para o código do modo kernel, se você inserir uma marca de pool que tenha um valor menor que PAGE_SIZE, o Gflags solicitará um pool especial para todas as alocações cujo tamanho está dentro do intervalo correspondente e solicitará um pool especial para alocações com uma marca de pool equivalente. Por exemplo, se você selecionar um tamanho de 30, o pool especial será usado para todas as alocações entre 17 e 32 bytes de tamanho e para alocações com o tag de pool 0x0030.
Selecionando um tamanho de alocação
Use as diretrizes a seguir para selecionar um tamanho de alocação para o recurso Pool Especial.
Em um computador com um processador x86, PAGE_SIZE é 0x1000 e os intervalos de tamanho de alocação têm 8 bytes de comprimento. Para configurar o recurso Pool Especial para todas as alocações com tamanhos nesse intervalo, insira um número igual ao máximo desse intervalo mais 8. (Esse número é sempre um múltiplo de 8.) A tabela a seguir ilustra estes valores:
| Intervalo de tamanho | Insira esse número |
|---|---|
1 a 8 bytes |
10 (decimal 16) |
9 a 16 bytes |
18 (decimal 24) |
17 a 24 bytes |
20 (decimal 32) |
... |
... |
0xFE9 a 0xFF0 bytes |
FF8 (decimal 4088) |
Em um computador com um processador AMD x86-64, PAGE_SIZE é 0x1000 e os intervalos de tamanho de alocação têm 16 bytes de comprimento. Para configurar o recurso pool especial para todas as alocações com tamanhos nesse intervalo, insira um número igual ao máximo desse intervalo mais 16. (Esse número é sempre um múltiplo de 16.) A tabela a seguir ilustra estes valores:
| Gama de tamanhos | Insira esse número |
|---|---|
1 a 16 bytes |
20 (decimal 32) |
17 a 32 bytes |
30 (decimal 48) |
33 a 48 bytes |
40 (decimal 64) |
... |
... |
0xFD1 a 0xFE0 bytes |
FF0 (decimal 4080) |
Em um computador com qualquer processador, você pode usar um asterisco ( * ) ou 0x2A (decimal 42) para configurar o recurso pool especial para todas as alocações de memória no sistema.
Comentários
Para obter informações sobre como configurar o recurso pool especial na caixa de diálogo Sinalizadores Globais, consulte Configurando o Pool Especial. Para obter informações sobre como configurar o recurso pool especial na linha de comando, consulte GFlags Commands. Para obter um exemplo, consulte Exemplo 14: Configurando o pool especial.
O recurso Pool Especial do Gflags orienta o Windows a solicitar alocações de memória de um pool de memória reservado quando a memória é alocada com uma marca de pool especificada ou está dentro de um intervalo de tamanho especificado. Para solicitar um pool especial para todas as alocações por um driver específico, use o Verificador de Driver. Para obter mais informações, consulte o tópico "Pool Especial" na seção "Verificador de Driver" do WDK (Windows Driver Kit).
Os recursos de pool especiais do Gflags e do Verificador de Driver ajudam você a detectar e identificar a origem dos erros no uso do pool de kernel, como gravar além do espaço de memória alocado ou fazer referência à memória que já foi liberada.
Nem todas as solicitações especiais do pool são atendidas. Cada alocação do pool especial usa uma página de memória física não paginável e duas páginas de espaço de endereço virtual. Se o pool especial estiver esgotado, a memória será alocada do pool padrão até que o pool especial fique disponível novamente. Quando uma solicitação de pool especial é preenchida do pool padrão, a função solicitante retorna um status de sucesso. Ele não retorna um erro, pois a alocação foi bem-sucedida, mesmo que não tenha sido preenchida a partir do pool especial.
O tamanho do pool especial aumenta com a quantidade de memória física no sistema; idealmente, isso deve ser pelo menos 1 Gigabyte (GB). Em máquinas x86, como o espaço virtual (além do físico) é consumido, não use a opção de inicialização /3 GB ao usar o pool especial. Também é uma boa ideia aumentar as quantidades mínimas/máximas do pagefile em um fator de dois ou três.
Você também pode configurar o recurso Pool Especial para alinhar a alocação de memória a fim de detectar referências à memória antes da alocação ("subutilização") ou referências à memória além da alocação ("sobrecarga"). Esse recurso está disponível apenas na caixa de diálogo Sinalizadores Globais em todas as versões do Windows. Para obter detalhes, consulte Detecção de Extrapolações e Inadequações.
No Windows Vista e versões posteriores do Windows, você pode configurar o recurso Special Pool como uma configuração de registro que requer uma reinicialização, mas permanece eficaz até você alterá-lo, ou como uma configuração de flag de kernel que não requer uma reinicialização, mas é eficaz somente até reinicializar ou desligar o Windows. Em versões anteriores do Windows, o Pool Especial só está disponível como uma configuração do Registro.
No Windows Vista e em versões posteriores, você pode configurar o recurso Special Pool por meio da caixa de diálogo Global Flags ou via linha de comando. Na versão anterior do Windows, esse recurso está disponível apenas na caixa de diálogo Sinalizadores Globais.