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
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive