FltAllocateExtraCreateParameterFromLookasideList 函数 (fltkernel.h)

FltAllocateExtraCretraCreateParameterFromLookasideList 例程从给定的 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

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

[in] SizeOfContext

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

[in] Flags

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

[in, optional] CleanupCallback

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

[in, out] LookasideList

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

[out] EcpContext

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

返回值

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

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

注解

此例程从 Windows Vista 开始可用。

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

使用 FltInitExtraCreateParameterLookasideList 例程初始化分页或非分页池 lookaside 列表。 使用 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)
Library 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