Функция FsRtlAllocateExtraCreateParameterList (ntifs.h)

Подпрограмма FsRtlAllocateExtraCreateParameterList выделяет выгружаемую память пула для ECP_LIST структуры и создает указатель на нее.

Синтаксис

NTSTATUS FsRtlAllocateExtraCreateParameterList(
  [in]  FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
  [out] PECP_LIST                    *EcpList
);

Параметры

[in] Flags

Определяет параметры выделения пула. Если флаг FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA объединен с параметром Flags с помощью побитовой операции ИЛИ, любой пул, выделенный FsRtlAllocateExtraCreateParameterList , будет взиматься по квоте памяти текущего процесса.

[out] EcpList

Получает указатель на инициализированную структуру списка ECP. Если FsRtlAllocateExtraCreateParameterList не удалось выделить достаточный пул, *EcpList будет иметь значение NULL, а FsRtlAllocateExtraCreateParameterList вернет код состояния STATUS_INSUFFICIENT_RESOURCES.

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

FsRtlAllocateExtraCreateParameterList может возвращать одно из следующих значений:

Код возврата Описание
STATUS_INSUFFICIENT_RESOURCES FsRtlAllocateExtraCreateParameterList не удалось выделить достаточный объем памяти для структуры списка ECP. В этом случае *EcpList будет иметь значение NULL.
STATUS_SUCCESS Память для структуры ECP_LIST была успешно выделена и инициализирована. В этом случае в параметре EcpList возвращается указатель на инициализированную структуру списка.

Комментарии

Будет ли операционная система автоматически освобождать память, выделенную FsRtlAllocateExtraCreateParameterList , зависит от того, когда вызывается FsRtlAllocateExtraCreateParameterList , как показано в следующих ситуациях:

  • Вызывающий объект может вызвать FsRtlAllocateExtraCreateParameterList , чтобы выделить ECP_LIST и добавить одну или несколько структур контекста ECP, прежде чем вызывающий объект вызовет подпрограмму IoCreateFileEx . В этом случае операционная система не освобождает никакие структуры контекста ECP. Таким образом, вызывающий объект может выполнять несколько вызовов IoCreateFileEx с одинаковым набором ECP. После завершения работы с ECP_LIST вызывающий объект должен вызвать подпрограмму FltFreeExtraCreateParameter , чтобы освободить ECP_LIST.

  • В то время как драйвер фильтра файловой системы или файловой системы обрабатывает запрос IRP_MJ_CREATE , драйвер фильтра файловой системы или файловой системы может вызвать FltInsertExtraCreateParameter для подключения ECP к существующему ECP_LIST. Если ECP_LIST не существует, вызывающий объект должен вызвать FsRtlAllocateExtraCreateParameterList , чтобы создать ECP_LIST. В этом случае ECP_LIST и структура контекста ECP автоматически очищаются диспетчером ввода-вывода после завершения операции создания. Это позволяет правильно распространять ECP файловой системы или драйвера фильтра по обработке точек повторного анализа. Для этого процесса может потребоваться создать несколько запросов IRP_MJ_CREATE.

Если флаг FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA используется с параметром Flags , выделяется страничный пул. В противном случае выстраиваемый пул выделяется с помощью внутреннего списка lookaside.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

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

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx