Macro FsRtlAllocatePoolWithQuotaTag (ntifs.h)

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

Sintaxe

void FsRtlAllocatePoolWithQuotaTag(
  [in]  PoolType,
  [in]  NumberOfBytes,
  [in]  Tag
);

Parâmetros

[in] PoolType

Tipo de pool a ser alocado. Um dos seguintes:

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

Os tipos de pool NonPagedPoolMustSucceed e NonPagedPoolCacheAlignedMustS estão obsoletos e não devem mais ser usados.

[in] NumberOfBytes

Número de bytes a serem alocados.

[in] Tag

Especifica a marca de pool para a memória alocada. Normalmente, os drivers especificam a marca de pool como uma cadeia de caracteres ASCII de um a quatro bits, delimitadas por aspas simples (por exemplo, 'abcd'). Esse parâmetro é necessário e não pode ser zero.

Retornar valor

Nenhum

Comentários

Se ocorrer uma falha de alocação de pool, FsRtlAllocatePoolWithQuotaTag gerará uma exceção STATUS_INSUFFICIENT_RESOURCES. Para obter controle se essa falha de alocação de pool ocorrer, o driver deverá encapsular a chamada para FsRtlAllocatePoolWithQuotaTag em uma instrução try-except ou try-finally .

O sistema associa a marca de pool especificada pelo parâmetro Tag ao buffer alocado. Ferramentas de programação, como o WinDbg (Depurador do Windows), podem exibir a marca de pool associada a cada buffer alocado. O valor da marca de pool normalmente é exibido em ordem invertida. Por exemplo, se um chamador passar 'Fred' como o valor do parâmetro Tag , esse valor aparecerá como 'derF' se o pool for despejado ou ao rastrear o uso do pool no depurador.

Para obter mais informações sobre o gerenciamento de memória, consulte Gerenciamento de Memória.

A memória alocada por FsRtlAllocatePoolWithQuotaTag 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).

Os chamadores de FsRtlAllocatePoolWithQuotaTag devem estar em execução em IRQL <= DISPATCH_LEVEL. Um chamador no DISPATCH_LEVEL deve especificar um NonPaged****XxxPoolType. Caso contrário, o chamador deverá estar em execução no DISPATCH_LEVEL IRQL < .

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (consulte a seção Comentários)

Confira também

ExAllocatePoolWithQuotaTag

ExFreePool

FsRtlAllocatePoolWithQuota