Функция FsRtlAllocateExtraCreateParameterFromLookasideList (ntifs.h)
Подпрограмма FsRtlAllocateExtraCreateParameterFromLookasideList выделяет пул памяти из заданного списка lookaside для дополнительной структуры контекста параметра создания (ECP) и создает указатель на данную структуру.
Синтаксис
NTSTATUS FsRtlAllocateExtraCreateParameterFromLookasideList(
[in] LPCGUID EcpType,
[in] ULONG SizeOfContext,
[in] FSRTL_ALLOCATE_ECP_FLAGS Flags,
[in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
[in, out] PVOID LookasideList,
[out] PVOID *EcpContext
);
Параметры
[in] EcpType
Указатель на GUID, указывающий тип ECP, для которого должна быть выделена структура контекста. Дополнительные сведения о ECP см. в разделе Использование дополнительных параметров создания с IRP_MJ_CREATE операцией.
[in] SizeOfContext
Размер в байтах структуры контекста ECP.
[in] Flags
Определяет параметры выделения пула. Если значение параметра SizeOfContext больше размера в байтах списка lookaside, на который указывает параметр LookasideList, FsRtlAllocateExtraCreateParameterFromLookasideList выделяет структуру контекста ECP из системного пула вместо списка lookaside. В этом случае, если параметр флагов
[in, optional] CleanupCallback
Необязательный указатель на определяемую мини-фильтром подпрограмму обратного вызова типа PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. Подпрограмма обратного вызова очистки вызывается при удалении структуры контекста ECP. Присвойте этому параметру значение NULL, если подпрограмма обратного вызова очистки неприменима.
[in, out] LookasideList
Указатель на инициализированный список lookaside, из которого FsRtlAllocateExtraCreateParameterFromLookasideList пытается выделить пул (для структуры контекста ECP). Чтобы инициализировать список lookaside, используйте процедуру FsRtlInitExtraCreateParameterLookasideList.
[out] EcpContext
Указатель на расположение, которое получает указатель на выделенную структуру контекста ECP. Если FsRtlAllocateExtraCreateParameterFromLookasideList не удалось выделить достаточный пул для структуры контекста ECP, FsRtlAllocateExtraCreateParameterFromLookasideList задает EcpContext значение NULL и возвращает код состояния STATUS_INSUFFICIENT_RESOURCES.
Возвращаемое значение
Подпрограмма FsRtlAllocateExtraCreateParameterFromLookasideList может возвращать одно из следующих значений:
Возвращаемый код | Описание |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Подпрограмма FsRtlAllocateExtraCreateParameterFromLookasideList не удалось выделить достаточную память для структуры контекста ECP. В этом случае параметр EcpContextNULL. |
STATUS_SUCCESS | Структура контекста ECP успешно выделена. В этом случае FsRtlAllocateExtraCreateParameterFromLookasideList возвращает указатель на выделенную структуру в параметре EcpContext. |
Замечания
Используйте FsRtlInitExtraCreateParameterLookasideList подпрограмму, чтобы инициализировать список подстановок пула. Используйте подпрограмму FsRtlAllocateExtraCreateParameterFromLookasideList, чтобы выделить структуру контекста ECP из списка lookaside, а FsRtlFreeExtraCreateParameter подпрограмму для освобождения структуры контекста ECP.
Используйте процедуру FsRtlDeleteExtraCreateParameterLookasideList, чтобы освободить список lookaside.
Драйверы должны освободить все структуры контекста ECP и списки lookaside, которые они создают перед выгрузками. Однако если драйвер фильтра файловой системы или файловой системы подключает ECP к существующему или недавно созданному ECP_LIST при обработке запроса IRP_MJ_CREATE, этот ECP автоматически очищается после завершения IRP. В результате драйвер фильтра не должен очищать ЕЦП, которые добавляются динамически. Это позволяет драйверу фильтра правильно распространяться по точкам повторного анализа, процесс, который может требовать создания нескольких IRP_MJ_CREATE запросов.
Дополнительные сведения об использовании списков lookaside с драйверами см. в использовании списков Lookaside.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | FsRtlAllocateExtraCreateParameterFromLookasideList доступен начиная с Windows Vista. |
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки |
NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
См. также
FsRtlDeleteExtraCreateParameterLookasideList