Compartilhar via


Função ExAllocatePoolQuotaUninitialized (wdm.h)

A rotina ExAllocatePoolQuotaUninitialized aloca memória do pool, cobrando a cota no processo atual.

Essa rotina é uma opção de wrapper e substituição para ExAllocatePoolWithQuotaTag. Não diferenças na funcionalidade.

Sintaxe

PVOID ExAllocatePoolQuotaUninitialized(
  __drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
  SIZE_T                                         NumberOfBytes,
  ULONG                                          Tag
);

Parâmetros

PoolType

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

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 de residentes o máximo possível, você não deve referenciar essas alocações com frequência. O sinalizador POOL_COLD_ALLOCATION é apenas um 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.

Retornar valor

ExAllocatePoolQuotaUninitialized retorna um ponteiro para o pool alocado.

Se a solicitação não puder ser atendida, ExAllocatePoolQuotaUninitialized gerará uma exceção, a menos que POOL_QUOTA_FAIL_INSTEAD_OF_RAISE seja especificado. Usar POOL_QUOTA_FAIL_INSTEAD_OF_RAISE é preferencial por motivos de desempenho.

Comentários

Essa rotina é chamada por drivers de nível mais alto que alocam memória para atender a uma solicitação no contexto do processo que originalmente fez a solicitação de E/S. Drivers de nível inferior chamam ExAllocatePoolUninitialized .

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

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Requer 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 IRQL <= DISPATCH_LEVEL (consulte a seção Comentários)
Regras de conformidade de DDI HwStorPortProhibitedDDIs, SpNoWait, StorPortStartIo

Confira também

ExAllocatePoolQuotaZero

ExAllocatePoolWithQuotaTag