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