Compartilhar via


Função ExAllocatePoolPriorityUninitialized (wdm.h)

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

ExAllocatePoolPriorityUninitialized aloca memória do pool do tipo especificado.

Sintaxe

PVOID ExAllocatePoolPriorityUninitialized(
  __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. Para obter mais informações, consulte o parâmetro Tag de ExAllocatePoolWithTag.

Priority

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

Retornar valor

ExAllocatePoolPriorityUninitialized 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

A memória alocada por ExAllocatePoolPriorityUninitialized não é inicializada. Um driver de modo kernel deve primeiro zero essa memória se ele vai torná-lo visível para o software no modo de usuário (para evitar o vazamento de conteúdo potencialmente privilegiado)

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

ExAllocatePoolPriorityZero