Макрос 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.

Система связывает тег пула, указанный параметром тега с выделенным буфером. Средства программирования, такие как отладчик Windows (WinDbg), могут отображать тег пула, связанный с каждым выделенным буфером. Значение тега пула обычно отображается в обратном порядке. Например, если вызывающий объект передает Fred в качестве значения параметра тега тега, это значение будет отображаться как derF, если пул дампается или при отслеживании использования пула в отладчике.

Дополнительные сведения об управлении памятью см. в управления памятью.

Память, которая FsRtlAllocatePoolWithTag выделяется неинициализировано. Драйвер в режиме ядра должен сначала ноль этой памяти, если он будет отображаться в программном обеспечении в пользовательском режиме (чтобы избежать утечки потенциально привилегированного содержимого).

Вызывающие FsRtlAllocatePoolWithTag должны работать в IRQL <= DISPATCH_LEVEL. Вызывающий объект DISPATCH_LEVEL должен указать nonPagedXxxPoolType. В противном случае вызывающий объект должен работать в IRQL <= APC_LEVEL.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (см. раздел "Примечания")

См. также

ExAllocatePoolWithTag

ExFreePool