FsRtlExitFileSystem 函数
FsRtlExitFileSystem 宏重新启用对 FsRtlEnterFileSystem 的调用禁用的正常内核模式 APC 的传递。
语法
VOID FsRtlExitFileSystem(
VOID
);
参数
无
返回值
此函数不返回值。
注解
每个文件系统驱动程序入口点例程必须在获取执行文件 I/O 请求所需的资源之前立即调用 FsRtlEnterFileSystem ,然后立即调用 FsRtlExitFileSystem 。 这可确保例程在运行时无法挂起,从而阻止其他文件 I/O 请求。
每次成功调用 FsRtlEnterFileSystem 都必须与 FsRtlExitFileSystem 的后续调用相匹配。
与本地文件系统和网络重定向程序不同,文件系统筛选器驱动程序绝不应通过调用 FsRtlEnterFileSystem 或 KeEnterCriticalRegion 或通过通过调用 IoCallDriver 提升到 IRQL APC_LEVEL) 来禁用正常内核 APC (传递。
文件系统筛选器驱动程序应禁用正常内核 APC 的唯一时间是在调用 ExAcquireResourceExclusive、ExAcquireResourceExclusiveLite、ExAcquireResourceSharedLite 或 ExAcquireSharedStarveExclusive 之前。 在筛选器驱动程序调用 ExReleaseResource 或 ExReleaseResourceLite 后,它应立即重新启用正常内核 APC 的传递。 作为 FsRtlEnterFileSystem 的替代方法,微筛选器驱动程序可以使用 FltAcquireResourceExclusive、 FltAcquireResourceShared 和 FltReleaseResource 例程,它们可在获取和释放资源时正确处理 APC。
在调用 ExAcquireSharedWaitForExclusive 之前,无需禁用正常的内核 APC,因为此例程调用 KeRaiseIrqlToDpcLevel,这会禁用普通和特殊内核 APC。 在调用 ExAcquireFastMutex 或 ExAcquireResourceExclusive 之前也不需要这样做,因为这些例程会禁用正常的内核 APC。
要求
要求类型 | 要求 |
---|---|
标头 | Ntifs.h (包括 Ntifs.h) |
IRQL | <= APC_LEVEL |
另请参阅
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive