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 分配的系统池将按当前进程的内存配额收费。 有关位标志值的详细信息,请参阅 FsRtlAllocateExtraCreateParameter的 Flags 参数。 在更典型的情况下,当 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 上下文结构分配足够的池,FsRtlAllocateExtraCreateParameterFromLookasideList 将 ecpContext 设置为 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