PFREE_FUNCTION函数指针
文件系统旧版筛选器驱动程序可以将 PFREE_FUNCTION 类型的例程注册为筛选器的 FreeCallback 回调例程。 当文件系统使用 FsRtlTeardownPerFileContexts 删除文件上下文对象或使用 FsRtlTeardownPerStreamContexts 删除流上下文对象时,文件系统将调用 FreeCallback。
必须使用 FREE_FUNCTION 类型声明回调例程。 有关详细信息,请参阅“备注”部分中的示例。
语法
typedef VOID ( *FreeCallback)(
_In_ PVOID Buffer
);
参数
- Buffer [in]:指向 要释放的FSRTL_PER_FILE_CONTEXT 或 FSRTL_PER_STREAM_CONTEXT 结构的指针。
返回值
无
备注
当文件系统为文件拆解每个文件上下文对象时,它必须调用 FsRtlTeardownPerFileContexts。 此例程调用与文件关联的所有每文件上下文结构的 FreeCallback 例程。 此回调例程必须释放用于 FSRTL_PER_FILE_CONTEXT 对象和任何关联的上下文信息的任何内存。 当调用 FsRtlTeardownPerStreamContexts 并且 FreeCallback 将释放用于 FSRTL_PER_STREAM_CONTEXT 对象的内存时,每个流上下文也是如此。
有关在调用 FreeCallback 期间同步对每文件上下文对象或每流上下文对象的访问的注释,请参阅 FsRtlTeardownPerFileContexts 和 FsRtlTeardownPerStreamContexts。
注意
FreeCallback 例程不能以递归方式调用文件系统或获取任何文件系统资源。
若要定义名为 MyFreeFunction 的 FreeCallback 回调函数,必须先提供静态驱动程序验证程序 (SDV) 和其他验证工具所需的函数声明,如下所示:
FREE_FUNCTION MyFreeFunction;
然后实现回调函数,如下所示:
VOID
MyFreeFunction (
__in PVOID Buffer
)
{...}
要求
要求类型 | 要求 |
---|---|
最低受支持的客户端 | Windows Vista |
标头 | Wdm.h (包括 Wdm.h 或 Ntddk.h) |
IRQL | <= APC_LEVEL |
另请参阅
FsRtlTeardownPerStreamContexts