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