FsRtlEnterFileSystem 函数
FsRtlEnterFileSystem 宏暂时禁止在 APC) (传递正常的内核模式异步过程调用。 仍会提供特殊的内核模式 APC。
语法
VOID FsRtlEnterFileSystem(
VOID
);
参数
无
返回值
此函数不返回值。
注解
每个文件系统驱动程序入口点例程必须在获取执行文件 I/O 请求所需的资源之前立即调用 FsRtlEnterFileSystem ,然后立即调用 FsRtlExitFileSystem 。 这可确保例程在运行时无法挂起,从而阻止其他文件 I/O 请求。
每次成功调用 FsRtlEnterFileSystem 都必须与 后续对 FsRtlExitFileSystem 的调用相匹配。
仅当 FsRtlExitFileSystem 或 KeLeaveCriticalRegion 位于同一调度例程中时,文件系统筛选器驱动程序才能通过在 IoCallDriver 之前调用 FsRtlEnterFileSystem 或 KeEnterCriticalRegion 来禁用正常内核 APC 的传递。 他们不应在 IoCallDriver 之前调用 FsRtlEnterFileSystem 或 KeEnterCriticalRegion,然后在 IRP 的完成例程中调用 FsRtlExitFileSystem 或 KeLeaveCriticalRegion。 驱动程序验证程序有一个规则来帮助捕获此条件。
文件系统筛选器驱动程序应在获取任何资源之前禁用普通内核 APC。 文件系统筛选器驱动程序使用以下例程获取资源:
- ExAcquireResourceExclusive
- ExAcquireResourceExclusiveLite
- ExAcquireResourceShared
- ExAcquireResourceSharedLite
- ExAcquireSharedStarveExclusive
- ExAcquireSharedWaitForExclusive
作为 FsRtlEnterFileSystem 的替代方法,微筛选器驱动程序可以使用 FltAcquireResourceExclusive、 FltAcquireResourceShared 和 FltReleaseResource 例程,这些例程在获取和释放资源时正确处理 APC。
要求
要求类型 | 要求 |
---|---|
标头 | Ntifs.h (包括 Ntifs.h) |
IRQL | <= APC_LEVEL |
另请参阅
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive