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