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


Функция 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 с помощью побитовой операции OR, то любой пул, выделенный 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 используется с параметром флагов , выделяется пул страниц. В противном случае пул страниц выделяется с помощью внутреннего списка lookaside.

Требования

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

См. также

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx