Макрос FsRtlAllocatePoolWithQuotaTag (ntifs.h)
Подпрограмма FsRtlAllocatePoolWithQuotaTag выделяет память пула, квоту зарядки для текущего процесса.
Синтаксис
void FsRtlAllocatePoolWithQuotaTag(
[in] PoolType,
[in] NumberOfBytes,
[in] Tag
);
Параметры
[in] PoolType
Тип пула для выделения. Одно из следующих элементов:
- NonPagedPool
- PagedPool
- NonPagedPoolCacheAligned
- PagedPoolCacheAligned
NonPagedPoolMustSucceed и NonPagedPoolCaolCacheAlignedMustS типы пулов устарели и больше не должны использоваться.
[in] NumberOfBytes
Количество байтов для выделения.
[in] Tag
Указывает тег пула для выделенной памяти. Драйверы обычно указывают тег пула в виде строки из одного до четырех 7-разрядных символов ASCII, разделенных одними кавычками (например, abcd). Этот параметр является обязательным и не может быть нулевым.
Возвращаемое значение
Никакой
Замечания
Если возникает сбой выделения пула, FsRtlAllocatePoolWithQuotaTag вызывает исключение STATUS_INSUFFICIENT_RESOURCES. Чтобы получить контроль при сбое выделения пула, драйвер должен упаковать вызов FsRtlAllocatePoolWiolWithQuotaTag в try-except или инструкции try-finally.
Система связывает тег пула, указанный параметром тега с выделенным буфером. Средства программирования, такие как отладчик Windows (WinDbg), могут отображать тег пула, связанный с каждым выделенным буфером. Значение тега пула обычно отображается в обратном порядке. Например, если вызывающий объект передает Fred в качестве значения параметра тега тега, это значение будет отображаться как derF, если пул дампается или при отслеживании использования пула в отладчике.
Дополнительные сведения об управлении памятью см. в управления памятью.
Память, которая FsRtlAllocatePoolWithQuotaTag выделяется неинициализировано. Драйвер в режиме ядра должен сначала ноль этой памяти, если он будет отображаться в программном обеспечении в пользовательском режиме (чтобы избежать утечки потенциально привилегированного содержимого).
Вызывающие FsRtlAllocatePoolWithQuotaTag должны работать в IRQL <= DISPATCH_LEVEL. Вызывающий объект в DISPATCH_LEVEL должен указать NonPaged**XxxPoolType. В противном случае вызывающий объект должен работать в IRQL < DISPATCH_LEVEL.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (см. раздел "Примечания") |