FltAllocateExtraCreateParameterFromLookasideList 函数 (fltkernel.h)

FltAllocateExtraCreateParameterFromLookasideList 例程从给定的 lookaside 列表中为额外的创建参数(ECP)上下文结构分配内存池,并生成指向该结构的指针。

语法

NTSTATUS FLTAPI FltAllocateExtraCreateParameterFromLookasideList(
  [in]           PFLT_FILTER                                    Filter,
  [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] Filter

指向微型筛选器驱动程序的不透明筛选器指针。 此指针唯一标识微型筛选器驱动程序,只要加载微型筛选器驱动程序,该驱动程序就保持不变。

[in] EcpType

指向指示 ECP 上下文结构的类型的 GUID 的指针。 有关详细信息,请参阅 在驱动程序中使用 GUID

[in] SizeOfContext

ECP 上下文结构的大小(以字节为单位)。

[in] Flags

定义池分配选项。 如果 SizeOfContext 参数的值大于给定的 lookaside 列表的大小(以字节为单位),则 ECP 上下文结构将从系统池而不是 lookaside 列表进行分配。 在这种情况下,如果 Flags 参数包含FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA位标志值,则由例程分配的系统池将针对当前进程的内存配额收费。 有关详细信息,请参阅 FltAllocateExtraCreateParameterFlags 参数。 在从 lookaside 列表中分配 ECP 上下文结构的内存时,例程不会使用FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA位标志。

[in, optional] CleanupCallback

可选指针,指向 PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK类型的微筛选器定义的清理回调例程。 删除 ECP 上下文结构时,将调用清理回调例程。 如果清理回调例程不适用,请将此参数设置为 NULL

[in, out] LookasideList

指向初始化的查找列表的指针,该列表尝试从中分配池(对于 ECP 上下文结构)。 若要初始化 lookaside 列表,请使用 FltInitExtraCreateParameterLookasideList 例程。

[out] EcpContext

接收指向分配的 ECP 上下文结构的指针。 如果例程未能为 ECP 上下文结构分配足够的池,EcpContextNULL,例程将返回状态代码STATUS_INSUFFICIENT_RESOURCES。

返回值

FltAllocateExtraCreateParameterFromLookasideList 例程可以返回以下值之一:

返回代码 描述
STATUS_INSUFFICIENT_RESOURCES FltAllocateExtraCreateParameterFromLookasideList 例程无法为 ECP 上下文结构分配足够的内存。 在这种情况下,EcpContextNULL
STATUS_SUCCESS 已成功分配 ECP 上下文结构。 在这种情况下,EcpContext 参数返回指向已分配结构的指针。

言论

此例程从 Windows Vista 开始可用。

FltAllocateExtraCreateParameterFromLookasideList 例程从给定初始化的分页列表或非分页查找列表中为 ECP 上下文结构分配内存池。 但是,如果 ECP 上下文结构(由 SizeOfContext 参数定义)的大小大于外观列表,则例程类似地从分页或非分页系统池分配内存。

使用 FltInitExtraCreateParameterLookasideList 例程初始化分页或非分页池外观列表。 使用 FltAllocateExtraCreateParameterFromLookasideList 例程从 lookaside 列表中分配 ECP 上下文结构,使用 FltFreeExtraCreateParameter 例程解除分配 ECP 上下文结构。

使用 FltDeleteExtraCreateParameterLookasideList 例程释放 lookaside 列表。

驱动程序必须在卸载之前释放它们创建的所有 ECP 上下文结构和外观列表。 但是,如果文件系统或文件系统筛选器驱动程序在处理IRP_MJ_CREATE请求时将 ECP 附加到现有或新创建的ECP_LIST,则在 IRP 完成时会自动清理此 ECP。 因此,筛选器驱动程序不必清理动态添加的 ECP。 这允许筛选器驱动程序的 ECP 在重新分析点之间正确传播,该过程可能需要生成多个IRP_MJ_CREATE请求。

有关将 lookaside 列表与驱动程序配合使用的详细信息,请参阅 使用 Lookaside Lists

要求

要求 价值
目标平台 普遍
标头 fltkernel.h (包括 Fltkernel.h)
FltMgr.lib
IRQL <= APC_LEVEL

另请参阅

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltDeleteExtraCreateParameterLookasideList

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInitExtraCreateParameterLookasideList

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK