FsRtlEnterFileSystem 函式
FsRtlEnterFileSystem 宏會暫時停用 (APC) 一般內核模式異步過程調用的傳遞。 仍會傳遞特殊核心模式 APC。
語法
VOID FsRtlEnterFileSystem(
VOID
);
參數
None
傳回值
此函式不會傳回值。
備註
每個文件系統驅動程式進入點例程都必須立即呼叫 FsRtlEnterFileSystem ,然後才取得執行檔案 I/O 要求所需的資源,然後立即呼叫 FsRtlExitFileSystem 。 這可確保例程在執行時無法暫停,因而封鎖其他檔案 I/O 要求。
對 FsRtlEnterFileSystem 的每個成功呼叫都必須與 後續對 FsRtlExitFileSystem 的呼叫相符。
只有在 FsRtlExitFileSystem 或 KeLeaveCriticalRegion 位於相同的分派例程中時,文件系統篩選驅動程式才能在 IoCallDriver 之前呼叫 FsRtlEnterFileSystem 或 KeLeaveCriticalRegion,以停用一般核心 APC 的傳遞。 他們不應該在IoCallDriver之前呼叫 FsRtlEnterFileSystem 或KeEnterCriticalRegion,然後在 IRP 完成例程中呼叫 FsRtlExitFileSystem 或 KeLeaveCriticalRegion。 驅動程式驗證器具有可協助攔截此條件的規則。
文件系統篩選驅動程式應該先停用一般核心 APC,再取得任何資源。 檔案系統篩選驅動程式會使用下列例程取得資源:
- ExAcquireResourceExclusive
- ExAcquireResourceExclusiveLite
- ExAcquireResourceShared
- ExAcquireResourceSharedLite
- ExAcquireSharedStarveExclusive
- ExAcquireSharedWaitForExclusive
作為 FsRtlEnterFileSystem 的替代方案,minifilter 驅動程式可以使用 FltAcquireResourceExclusive、 FltAcquireResourceShared 和 FltReleaseResource 例程,以在取得和釋放資源時正確處理 APC。
規格需求
需求類型 | 需求 |
---|---|
標頭 | Ntifs.h (包含 Ntifs.h) |
IRQL | <= APC_LEVEL |
另請參閱
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive