FltCancelFileOpen 函数 (fltkernel.h)
微型筛选器驱动程序可以使用 FltCancelFileOpen 例程关闭新打开或创建的文件。
语法
VOID FLTAPI FltCancelFileOpen(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject
);
参数
[in] Instance
调用方不透明实例指针。 此参数是必需的,不能 NULL。
[in] FileObject
文件的文件对象指针。 此参数是必需的,不能 NULL。
返回值
没有
言论
如果微型筛选器驱动程序确定文件打开或文件创建(IRP_MJ_CREATE)作在文件系统已完成作并成功完成 NTSTATUS 值(如 STATUS_SUCCESS)后,微型筛选器驱动程序可以从其创建后回调例程调用 FltCancelFileOpen 以关闭该文件。
请注意,FltCancelFileOpen 不会撤消对文件的任何修改。 例如,FltCancelFileOpen 不会删除新创建的文件或还原覆盖或取代到其以前的状态的文件。
在为文件创建任何句柄之前,必须先调用 FltCancelFileOpen。 调用方可以检查 标志FILE_OBJECT 结构的成员,FileObject 参数指向。 如果设置了FO_HANDLE_CREATED标志,这意味着已为文件创建了一个或多个句柄,因此调用 FltCancelFileOpen不安全。
FltCancelFileOpen 设置 标志FileObject 指向的文件对象的FO_FILE_OPEN_CANCELLED标志。 此标志指示已取消创建作,并且将为此文件对象发出 close (IRP_MJ_CLOSE) 请求。
取消创建作后,无法重新发出该作。 有关详细信息,请参阅 FltReissueSynchronousIo。
FltCancelFileOpen 只能从微型筛选器驱动程序的创建后回调例程调用。 从任何其他类型的 I/O作或从预作回调(PFLT_POST_OPERATION_CALLBACKPFLT_PRE_OPERATION_CALLBACK)例程调用 FltCancelFileOpen 是编程错误。
FltCancelFileOpen 的调用方必须在 IRQL PASSIVE_LEVEL上运行。 但是,微型筛选器驱动程序可以从创建后回调例程调用此例程是安全的,因为在发起IRP_MJ_CREATE请求的线程上下文中,保证在 IRQL PASSIVE_LEVEL调用后回调例程。
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
标头 | fltkernel.h (包括 Fltkernel.h) |
库 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL(请参阅“备注”部分) |
另请参阅
IRP_MJ_CREATE 的 FLT_PARAMETERS