Partager via


Fonction FsRtlExitFileSystem

La macro FsRtlExitFileSystem réactive la remise des API normales en mode noyau qu’un appel précédent à FsRtlEnterFileSystem a désactivées.

Syntaxe

VOID FsRtlExitFileSystem(
   VOID 
);

Paramètres

None

Valeur de retour

Cette fonction ne retourne pas de valeur.

Remarques

Chaque routine de point d’entrée de pilote de système de fichiers doit appeler FsRtlEnterFileSystem immédiatement avant d’acquérir une ressource nécessaire à l’exécution d’une demande d’E/S de fichier et appeler FsRtlExitFileSystem immédiatement après. Cela garantit que la routine ne peut pas être suspendue pendant l’exécution et bloque donc les autres demandes d’E/S de fichier.

Chaque appel réussi à FsRtlEnterFileSystem doit être mis en correspondance par un appel ultérieur à FsRtlExitFileSystem.

Contrairement aux systèmes de fichiers locaux et aux redirecteurs réseau, les pilotes de filtre de système de fichiers ne doivent jamais désactiver la remise des API de noyau normales (en appelant FsRtlEnterFileSystem ou KeEnterCriticalRegion ou en effectuant un appel à IrQL APC_LEVEL) lors d’un appel à IoCallDriver.

Le seul moment où un pilote de filtre de système de fichiers doit désactiver les API normales du noyau est immédiatement avant d’appeler ExAcquireResourceExclusive, ExAcquireResourceExclusiveLite, ExAcquireResourceShared, ExAcquireResourceSharedLite ou ExAcquireSharedStarveExclusive. Une fois que le pilote de filtre a appelé ExReleaseResource ou ExReleaseResourceLite, il doit immédiatement réactiver la remise des API du noyau normal. En guise d’alternative à FsRtlEnterFileSystem, les pilotes minifilter peuvent utiliser les routines FltAcquireResourceExclusive, FltAcquireResourceShared et FltReleaseResource , qui gèrent correctement les API lors de l’acquisition et de la libération d’une ressource.

Il n’est pas nécessaire de désactiver les API de noyau normales avant d’appeler ExAcquireSharedWaitForExclusive , car cette routine appelle KeRaiseIrqlToDpcLevel, ce qui désactive les API de noyau normales et spéciales. Il n’est pas non plus nécessaire de le faire avant d’appeler ExAcquireFastMutex ou ExAcquireResourceExclusive, car ces routines désactivent les API de noyau normaux.

Configuration requise

Type d’exigence Condition requise
En-tête Ntifs.h (inclure Ntifs.h)
IRQL <= APC_LEVEL

Voir aussi

ExAcquireFastMutex

ExAcquireResourceExclusive

ExAcquireResourceExclusiveLite

ExAcquireResourceShared

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExAcquireSharedStarveExclusive

ExReleaseResource

ExReleaseResourceLite

ExTryToAcquireFastMutex

FltAcquireResourceExclusive

FltAcquireResourceShared

FltReleaseResource

FsRtlEnterFileSystem

IoCallDriver

KeLeaveCriticalRegion

KeRaiseIrqlToDpcLevel