Функция 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 |
См. также раздел
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterFromLookasideList
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по