FltAllocateCallbackDataEx 函数 (fltkernel.h)

FltAllocateCallbackDataEx 例程分配回调数据结构,并可以预分配微型筛选器驱动程序可用于启动 I/O 请求的其他结构的内存。

语法

NTSTATUS FLTAPI FltAllocateCallbackDataEx(
  [in]          PFLT_INSTANCE                    Instance,
  [in/optional] PFILE_OBJECT                     FileObject,
  [in]          FLT_ALLOCATE_CALLBACK_DATA_FLAGS Flags,
  [out]         PFLT_CALLBACK_DATA               *RetNewCallbackData
);

参数

[in] Instance

不透明实例指针,指向正在启动 I/O 操作的微筛选器驱动程序实例。 此参数是必需的,不能为 NULL

[in/optional] FileObject

指向要用于 I/O 操作的文件对象的指针。 此参数是可选的,可以为 NULL。 如果这是 CREATE 操作,请将 FileObject 设置为 NULL

[in] Flags

值为零或以下标志:FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY

如果设置了此标志,则例程会预先分配筛选器管理器所需的所有内存,以便在 I/O 请求中使用其他结构。

[out] RetNewCallbackData

指向调用方分配的变量的指针,该变量接收新分配的回调数据的地址 FLT_CALLBACK_DATA 结构。

返回值

如果例程在尝试分配回调数据结构时遇到池分配失败,或者如果设置了FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY标志且无法分配额外的内存, FltAllocateCallbackDataEx 例程将在成功时返回STATUS_SUCCESS或STATUS_INSUFFICIENT_RESOURCES。

注解

如果设置了FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY标志,则例程将分配其他筛选器管理器结构所需的所有内存,以便在后续 I/O 请求中使用。 使用此标志,微筛选器可以预分配一个或多个回调数据结构,以便在内存不足的情况下或从内存分配故障恢复可能很复杂的情况下发出 I/O 请求。

备注

额外的分配内存供筛选器管理器使用。 由于内存不足的情况,文件系统或其他筛选器仍可能使 I/O 请求失败。

重要

FltAllocateCallbackData 的注释也适用于 FltAllocateCallbackDataEx。 查看该信息,以便为设计选择正确的例程。

要求

要求
最低受支持的客户端 适用于 Windows 7 及更高版本的 Windows 操作系统。
目标平台 通用
标头 fltkernel.h (包括 FltKernel.h)
Library FltMgr.lib
IRQL <= APC_LEVEL

另请参阅

FLT_CALLBACK_DATA

FltAllocateCallbackData