PFREE_FUNCTION函数指针

文件系统 PFREE_FUNCTION 筛选器驱动程序可以将已键入的例程注册为筛选器 的 FreeCallback 回调 例程。 当文件系统使用 FsRtlTeardownPerFileContexts 删除文件上下文对象或通过使用 FsRtlTeardownPerStreamContexts 删除流上下文对象时,文件系统将调用 FreeCallback

必须使用参数类型声明回调 FREE_FUNCTION 例程。 有关详细信息,请参阅"备注"部分中的示例。

语法

typedef VOID ( *FreeCallback)(
  _In_ PVOID Buffer
);

参数

缓冲区 [in]
指向要释放FSRTL_PER_FILE_CONTEXT或FSRTL_PER_STREAM_CONTEXT对象的指针。

## 返回值

备注

当文件系统关闭文件的每个文件上下文对象时,它必须调用 FsRtlTeardownPerFileContexts。 此例程调用与文件关联的所有每文件上下文结构的 FreeCallback 例程。 此回调例程必须释放用于对象 FSRTL_PER_FILE_CONTEXT和任何 关联的上下文信息的内存。 调用 FsRtlTeardownPerStreamContexts 并且 FreeCallback 将释放用于对象的内存时,每个流上下文 FSRTL_PER_STREAM_CONTEXT 情况。

有关在调用 FreeCallback 期间同步对每个文件上下文对象或每个流上下文对象的访问的备注,请参阅 FsRtlTeardownPerFileContextsFsRtlTeardownPerStreamContexts

注意

FreeCallback 例程无法递归调用文件系统或获取任何文件系统资源。

若要定义名为 MyFreeFunctionFreeCallback 回调函数,必须先提供静态驱动程序验证程序 ( SDV) 和其他验证工具所需的函数声明,如下所示:

FREE_FUNCTION MyFreeFunction;

然后按如下所示实现回调函数:

VOID
 MyFreeFunction (
 __in PVOID Buffer
    )
  {...}

要求

目标平台:桌面

版本:从 Windows Vista 开始可用。

标头:Wdm.h (包括 Wdm.h 或 Ntddk.h)

IRQL: <= APC_LEVEL

另请参阅

FsRtlTeardownPerFileContexts

FsRtlTeardownPerStreamContexts

FSRTL_PER_FILE_CONTEXT

FSRTL_PER_STREAM_CONTEXT

跟踪Per-File文件系统筛选器驱动程序中的上下文

跟踪Per-Stream文件系统筛选器驱动程序中的上下文