FsRtlExitFileSystem 函数

FsRtlExitFileSystem 宏重新启用对 FsRtlEnterFileSystem 的调用禁用的正常内核模式 APC 的传递。

语法

VOID FsRtlExitFileSystem(
   VOID 
);

参数

返回值

此函数不返回值。

注解

每个文件系统驱动程序入口点例程必须在获取执行文件 I/O 请求所需的资源之前立即调用 FsRtlEnterFileSystem ,然后立即调用 FsRtlExitFileSystem 。 这可确保例程在运行时无法挂起,从而阻止其他文件 I/O 请求。

每次成功调用 FsRtlEnterFileSystem 都必须与 FsRtlExitFileSystem 的后续调用相匹配。

与本地文件系统和网络重定向程序不同,文件系统筛选器驱动程序绝不应通过调用 FsRtlEnterFileSystemKeEnterCriticalRegion 或通过通过调用 IoCallDriver 提升到 IRQL APC_LEVEL) 来禁用正常内核 APC (传递。

文件系统筛选器驱动程序应禁用正常内核 APC 的唯一时间是在调用 ExAcquireResourceExclusive、ExAcquireResourceExclusiveLiteExAcquireResourceSharedLiteExAcquireSharedStarveExclusive 之前。 在筛选器驱动程序调用 ExReleaseResourceExReleaseResourceLite 后,它应立即重新启用正常内核 APC 的传递。 作为 FsRtlEnterFileSystem 的替代方法,微筛选器驱动程序可以使用 FltAcquireResourceExclusiveFltAcquireResourceSharedFltReleaseResource 例程,它们可在获取和释放资源时正确处理 APC。

在调用 ExAcquireSharedWaitForExclusive 之前,无需禁用正常的内核 APC,因为此例程调用 KeRaiseIrqlToDpcLevel,这会禁用普通和特殊内核 APC。 在调用 ExAcquireFastMutexExAcquireResourceExclusive 之前也不需要这样做,因为这些例程会禁用正常的内核 APC。

要求

要求类型 要求
标头 Ntifs.h (包括 Ntifs.h)
IRQL <= APC_LEVEL

另请参阅

ExAcquireFastMutex

ExAcquireResourceExclusive

ExAcquireResourceExclusiveLite

ExAcquireResourceShared

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExAcquireSharedStarveExclusive

ExReleaseResource

ExReleaseResourceLite

ExTryToAcquireFastMutex

FltAcquireResourceExclusive

FltAcquireResourceShared

FltReleaseResource

FsRtlEnterFileSystem

IoCallDriver

KeLeaveCriticalRegion

KeRaiseIrqlToDpcLevel