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) |