Funzione FsRtlExitFileSystem
La macro FsRtlExitFileSystem abilita nuovamente il recapito delle normali API in modalità kernel che una chiamata precedente a FsRtlEnterFileSystem è disabilitata.
Sintassi
VOID FsRtlExitFileSystem(
VOID
);
Parametri
nessuno
Valore restituito
Questa funzione non restituisce un valore.
Commenti
Ogni routine di ingresso del driver del file system deve chiamare FsRtlEnterFileSystem immediatamente prima di acquisire una risorsa necessaria per eseguire una richiesta di I/O file e chiamare FsRtlExitFileSystem immediatamente dopo. Ciò garantisce che la routine non possa essere sospesa durante l'esecuzione e quindi bloccare altre richieste di I/O file.
Ogni chiamata riuscita a FsRtlEnterFileSystem deve essere corrispondente a una chiamata successiva a FsRtlExitFileSystem.
A differenza dei file system locali e dei reindirizzamenti di rete, i driver di filtro del file system non devono mai disabilitare il recapito delle normali API kernel (chiamando FsRtlEnterFileSystem o KeEnterCriticalRegion o eseguendo l'operazione di generazione a IRQL APC_LEVEL) in una chiamata a IoCallDriver.
L'unica volta che un driver di filtro del file system deve disabilitare le API kernel normali è immediatamente prima di chiamare ExAcquireResourceExclusive, ExAcquireResourceShared, ExAcquireResourceShared, ExAcquireResourceSharedLite o ExAcquireSharedStarveExclusive. Dopo che il driver di filtro chiama ExReleaseResource o ExReleaseResourceLite, dovrebbe riattivare immediatamente il recapito delle NORMALI API kernel. In alternativa a FsRtlEnterFileSystem, i driver minifilter possono usare le routine FltAcquireResourceExclusive, FltAcquireResourceShared e FltReleaseResource , che gestiscono correttamente le API durante l'acquisizione e il rilascio di una risorsa.
Non è necessario disabilitare le API del kernel normali prima di chiamare ExAcquireSharedWaitForExclusive perché questa routine chiama KeRaiseIrqlToDpcLevel, che disabilita le API del kernel normali e speciali. Non è anche necessario eseguire questa operazione prima di chiamare ExAcquireFastMutex o ExAcquireResourceExclusive, perché queste routine disabilitano le normali API del kernel.
Requisiti
Tipo di requisito | Requisito |
---|---|
Intestazione | Ntifs.h (include Ntifs.h) |
IRQL | <= APC_LEVEL |
Vedi anche
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive