Condividi tramite


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

ExAcquireFastMutex

ExAcquireResourceExclusive

ExAcquireResourceExclusiveLite

ExAcquireResourceShared

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExAcquireSharedStarveExclusive

ExReleaseResource

ExReleaseResourceLite

ExTryToAcquireFastMutex

FltAcquireResourceExclusive

FltAcquireResourceShared

FltReleaseResource

FsRtlEnterFileSystem

IoCallDriver

KeLeaveCriticalRegion

KeRaiseIrqlToDpcLevel