Поделиться через


Функция ExAllocatePoolQuotaUninitialized (wdm.h)

Подпрограмма ExAllocatePoolQuotaUninitialized выделяет память пула, взимая квоту для текущего процесса.

Эта подпрограмма является оболочкой и заменой для ExAllocatePoolWithQuotaTag. Нет никакой разницы в функциональности.

Синтаксис

PVOID ExAllocatePoolQuotaUninitialized(
  __drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
  SIZE_T                                         NumberOfBytes,
  ULONG                                          Tag
);

Параметры

PoolType

Тип памяти пула для выделения. Описание доступных типов памяти пула см. в разделе POOL_TYPE.

Аналогичным образом можно изменить значение PoolType путем побитового ввода этого значения с флагом POOL_COLD_ALLOCATION (также определенным в ) в wdm.hкачестве указания для ядра, чтобы выделить память на страницах, которые, скорее всего, будут быстро выгружатся. Чтобы как можно больше уменьшить объем памяти резидентного пула, не следует часто ссылаться на эти выделения. Флаг POOL_COLD_ALLOCATION является только рекомендательный.

NumberOfBytes

Количество байтов, которые необходимо выделить.

Tag

Тег пула, используемый для выделенной памяти. Укажите тег пула как ненулевой символьный литерал от одного до четырех символов, разделенных одними кавычками (например, Tag1). Строка обычно указывается в обратном порядке (например, 1gaT). Каждый символ ASCII в теге должен быть значением в диапазоне 0x20 (пробел) до 0x7E (тильда). Каждый путь к коду выделения должен использовать уникальный тег пула, чтобы помочь отладчикам и проверятелям определить путь к коду.

Возвращаемое значение

ExAllocatePoolQuotaUninitialized возвращает указатель на выделенный пул.

Если запрос не может быть выполнен, ExAllocatePoolQuotaUninitialized создает исключение, если не указано POOL_QUOTA_FAIL_INSTEAD_OF_RAISE. Использование POOL_QUOTA_FAIL_INSTEAD_OF_RAISE является предпочтительным из соображений производительности.

Комментарии

Эта подпрограмма вызывается драйверами самого высокого уровня, которые выделяют память для удовлетворения запроса в контексте процесса, который изначально сделал запрос ввода-вывода. Драйверы более низкого уровня вместо этого вызывают ExAllocatePoolUninitialized .

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

Дополнительные рекомендации см. в разделе Примечанияв ExAllocatePoolWithQuotaTag .

Требования

Требование Значение
Минимальная версия клиента Требуется WDK для Windows 10 версии 2004. Предназначен для Windows 7 и более поздних версий операционной системы Windows.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL (см. раздел "Примечания")
Правила соответствия DDI HwStorPortProhibitedDIS, SpNoWait, StorPortStartIo

См. также раздел

ExAllocatePoolQuotaZero

ExAllocatePoolWithQuotaTag