Função ExAllocatePoolQuotaZero (wdm.h)

Cuidado

A Microsoft está ciente de um problema com ExAllocatePoolQuotaZero que pode levar a uma alocação que não é zero 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 o 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 ExAllocatePoolWithQuotaTag.

ExAllocatePoolQuotaZero aloca a memória do pool do tipo especificado e retorna um ponteiro para o bloco alocado. Ele é idêntico a ExAllocatePoolWithQuotaTag , exceto que zero inicializa a memória alocada. Se isso não for desejado, use ExAllocatePoolQuotaUninitialized .

Sintaxe

PVOID ExAllocatePoolQuotaZero(
  __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

ExAllocatePoolQuotaZero retorna um ponteiro para o pool alocado.

Se a solicitação não puder ser atendida, ExAllocatePoolQuotaZero 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

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.

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. Em vez disso, os drivers de nível inferior chamam ExAllocatePoolZero .

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 <= DISPATCH_LEVEL (consulte a seção Comentários)
Regras de conformidade de DDI HwStorPortProhibitedDDIs, SpNoWait, StorPortStartIo

Confira também

ExAllocatePoolQuotaUninitialized