FsRtlAllocateExtraCreateParameterFromLookasideList 函数 (ntifs.h)

FsRtlAllocateExtraCreateParameterFromLookasideList 例程从给定外观列表中为额外的创建参数(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 的详细信息,请参阅 将 Extra Create Parameters 与 IRP_MJ_CREATE 操作配合使用。

[in] SizeOfContext

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

[in] Flags

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

[in, optional] CleanupCallback

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

[in, out] LookasideList

指向初始化的 lookaside 列表的指针,FsRtlAllocateExtraCreateParameterFromLookasideList 尝试为 ECP 上下文结构分配池。 若要初始化 lookaside 列表,请使用 FsRtlInitExtraCreateParameterLookasideList 例程。

[out] EcpContext

指向接收指向分配的 ECP 上下文结构的指针的位置的指针。 如果 FsRtlAllocateExtraCreateParameterFromLookasideList 未能为 ECP 上下文结构分配足够的池,FsRtlAllocateExtraCreateParameterFromLookasideListecpContext 设置为 NULL 并返回状态代码STATUS_INSUFFICIENT_RESOURCES。

返回值

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

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

言论

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

使用 FsRtlDeleteExtraCreateParameterLookasideList 例程释放 lookaside 列表。

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

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

要求

要求 价值
最低支持的客户端 FsRtlAllocateExtraCreateParameterFromLookasideList 从 Windows Vista 开始可用。
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK