Fonction FsRtlEnterFileSystem
La macro FsRtlEnterFileSystem désactive temporairement la remise d’appels de procédure asynchrone en mode noyau normal (APC). Les API spéciales en mode noyau sont toujours livrées.
Syntaxe
VOID FsRtlEnterFileSystem(
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 donc bloquer d’autres demandes d’E/S de fichier.
Chaque appel réussi à FsRtlEnterFileSystem doit être mis en correspondance par un appel suivant à FsRtlExitFileSystem.
Les pilotes de filtre de système de fichiers peuvent désactiver la remise des API de noyau normales en appelant FsRtlEnterFileSystem ou KeEnterCriticalRegion avant IoCallDriver uniquement si FsRtlExitFileSystem ou KeLeaveCriticalRegion se trouvent dans la même routine de distribution. Ils ne doivent pas appeler FsRtlEnterFileSystem ou KeEnterCriticalRegion avant IoCallDriver , puis appeler FsRtlExitFileSystem ou KeLeaveCriticalRegion dans la routine d’achèvement de l’IRP. Driver Verifier a une règle pour aider à intercepter cette condition.
Les pilotes de filtre de système de fichiers doivent désactiver les API de noyau normales avant d’acquérir une ressource. Les pilotes de filtre de système de fichiers acquièrent des ressources avec les routines suivantes :
- ExAcquireResourceExclusive
- ExAcquireResourceExclusiveLite
- ExAcquireResourceShared
- ExAcquireResourceSharedLite
- ExAcquireSharedStarveExclusive
- ExAcquireSharedWaitForExclusive
En guise d’alternative à FsRtlEnterFileSystem, les pilotes de minifiltre 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.
Configuration requise
Type d’exigence | Condition requise |
---|---|
En-tête | Ntifs.h (inclure Ntifs.h) |
IRQL | <= APC_LEVEL |
Voir aussi
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive