PFREE_FUNCTION函数指针

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

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

语法

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

参数

返回值

备注

当文件系统为文件拆解每个文件上下文对象时,它必须调用 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.hNtddk.h)
IRQL <= APC_LEVEL

另请参阅

FsRtlTeardownPerFileContexts

FsRtlTeardownPerStreamContexts

FSRTL_PER_FILE_CONTEXT

FSRTL_PER_STREAM_CONTEXT

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

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