Compartilhar via


Função ExAllocatePoolPriorityZero (wdm.h)

Cuidado

A Microsoft está ciente de um problema com ExAllocatePoolPriorityZero que pode levar a uma alocação não ser zerado no Windows 10, versão 1909. Esse problema foi corrigido em uma atualização de segurança do WDK para Windows 10, versão 2004 e do Enterprise WDK (EWDK) para Windows 10, versão 2004, em 16 de dezembro de 2020. Para obter informações sobre como baixar o WDK mais recente, consulte Baixar o WDK (Kit de Driver do Windows).

Essa rotina é um wrapper para e uma opção de substituição recomendada para ExAllocatePoolWithTagPriority.

ExAllocatePoolPriorityZero aloca memória de pool do tipo especificado.

Ela é idêntica a ExAllocatePoolWithTagPriority, exceto que zero inicializa a memória alocada. Se isso não for desejado, use ExAllocatePoolPriorityUninitialized .

Sintaxe

PVOID ExAllocatePoolPriorityZero(
  __drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
  SIZE_T                                         NumberOfBytes,
  ULONG                                          Tag,
  EX_POOL_PRIORITY                               Priority
);

Parâmetros

PoolType

O tipo de memória do pool a ser alocada. Para obter uma descrição dos tipos de memória do pool disponíveis, consulte POOL_TYPE.

Você pode modificar o valor de enumeração executando um OR bit a bit com o sinalizador POOL_RAISE_IF_ALLOCATION_FAILURE definido em wdm.h. Esse sinalizador fará com que uma exceção seja gerada se a solicitação não puder ser atendida. O uso desse sinalizador não é recomendado porque ele é caro.

Da mesma forma, você pode modificar o valor poolType bit a bit ORing esse valor com o sinalizador POOL_COLD_ALLOCATION (também definido em wdm.h) como uma dica para o kernel para alocar a memória de páginas que provavelmente serão paginada rapidamente. Para reduzir a quantidade de memória do pool residente o máximo possível, você não deve referenciar essas alocações com frequência. O sinalizador POOL_COLD_ALLOCATION é apenas aviso.

NumberOfBytes

O número de bytes a serem alocados.

Tag

A marca de pool a ser usada para a memória alocada. Especifique a marca de pool como um literal de caractere diferente de zero de um a quatro caracteres delimitado por aspas simples (por exemplo, Tag1). A cadeia de caracteres geralmente é especificada em ordem inversa (por exemplo, 1gaT). Cada caractere ASCII na marca deve ser um valor no intervalo 0x20 (espaço) para 0x7E (til). Cada caminho de código de alocação deve usar uma marca de pool exclusiva para ajudar os depuradores e verificadores a identificar o caminho do código.

Priority

Um valor de enumeração EX_POOL_PRIORITY especificando a prioridade dessa solicitação.

Retornar valor

ExAllocatePoolPriorityZero retornará NULL se não houver memória suficiente no pool livre para atender à solicitação, a menos que POOL_RAISE_IF_ALLOCATION_FAILURE seja especificado. Caso contrário, a rotina retornará um ponteiro para a memória alocada.

Comentários

Para ser executado em versões do Windows antes de Windows 10 versão 2004, o driver deve definir POOL_ZERO_DOWN_LEVEL_SUPPORT e chamar ExInitializeDriverRuntime antes de chamar essa função.

Consulte a seção Comentários de ExAllocatePoolWithTagPriority para obter diretrizes adicionais.

Requisitos

Requisito Valor
Cliente mínimo com suporte Requer o WDK para Windows 10, versão 2004. Tem como destino o Windows 7 e versões posteriores do sistema operacional Windows.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (consulte a seção Comentários)
Regras de conformidade da DDI HwStorPortProhibitedDDIs, IrqlExAllocatePool, IrqlExFree2, SpNoWait, StorPortStartIo

Confira também

ExAllocatePoolWithTagPriority

ExAllocatePoolPriorityUninitialized