Функция 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 используется с параметром флагов
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista |
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
См. также
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterFromLookasideList