FsRtlAllocateExtraCreateParameterList 函数 (ntifs.h)

FsRtlAllocateExtraCreateParameterList 例程为ECP_LIST结构分配分页池内存,并生成指向该结构的指针。

语法

NTSTATUS FsRtlAllocateExtraCreateParameterList(
  [in]  FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
  [out] PECP_LIST                    *EcpList
);

参数

[in] Flags

定义池分配选项。 如果使用按位 OR 操作将 FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 标志与 Flags 参数组合,则 FsRtlAllocateExtraCreateParameterList 分配的任何池都将按当前进程的内存配额收费。

[out] EcpList

接收指向已初始化的 ECP 列表结构的指针。 如果 FsRtlAllocateExtraCreateParameterList 未能分配足够的池,*EcpList 将为 NULL,FsRtlAllocateExtraCreateParameterList 将返回状态代码STATUS_INSUFFICIENT_RESOURCES。

返回值

FsRtlAllocateExtraCreateParameterList 可以返回以下值之一:

返回代码 说明
STATUS_INSUFFICIENT_RESOURCES FsRtlAllocateExtraCreateParameterList 无法为 ECP 列表结构分配足够的内存。 在这种情况下,*EcpList 将为 NULL。
STATUS_SUCCESS 已成功分配和初始化 ECP_LIST 结构的内存。 在这种情况下,在 EcpList 参数中返回指向已初始化列表结构的指针。

注解

操作系统是否自动释放 FsRtlAllocateExtraCreateParameterList 分配的内存取决于何时调用 FsRtlAllocateExtraCreateParameterList ,如以下情况所示:

  • 调用方可以调用 FsRtlAllocateExtraCreateParameterList 来分配ECP_LIST,并在调用方调用 IoCreateFileEx 例程之前添加一个或多个 ECP 上下文结构。 在这种情况下,操作系统不会释放任何 ECP 上下文结构。 因此,调用方可以使用同一 ECP 集对 IoCreateFileEx 进行多次调用。 调用方完成ECP_LIST后,调用方必须调用 FltFreeExtraCreateParameter 例程来释放ECP_LIST。

  • 当文件系统或文件系统筛选器驱动程序处理 IRP_MJ_CREATE 请求时,文件系统或文件系统筛选器驱动程序可以调用 FltInsertExtraCreateParameter 以将 ECP 附加到现有ECP_LIST。 如果ECP_LIST不存在,调用方必须调用 FsRtlAllocateExtraCreateParameterList 来创建ECP_LIST。 在这种情况下,创建操作完成后,I/O 管理器会自动清理ECP_LIST和 ECP 上下文结构。 这样,文件系统或筛选器驱动程序的 ECP 就可以在重新分析点的处理过程中正确传播。 此过程可能需要生成多个IRP_MJ_CREATE请求。

如果 FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 标志与 Flags 参数一起使用,则会分配可分页池。 否则,将使用内部查看列表分配可分页池。

要求

要求
最低受支持的客户端 Windows Vista
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterFromLookasideList

FltCreateFileEx2

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx