FsRtlEnterFileSystem-Funktion
Das FsRtlEnterFileSystem-Makro deaktiviert vorübergehend die Übermittlung von asynchronen Prozeduraufrufen (APC) im normalen Kernelmodus. Spezielle Kernelmodus-APCs werden weiterhin bereitgestellt.
Syntax
VOID FsRtlEnterFileSystem(
VOID
);
Parameter
Keine
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Hinweise
Jede Dateisystemtreibereinstiegsroutine muss FsRtlEnterFileSystem unmittelbar vor dem Abrufen einer Ressource aufrufen, die zum Ausführen einer Datei-E/A-Anforderung erforderlich ist, und fsRtlExitFileSystem sofort danach aufrufen. Dadurch wird sichergestellt, dass die Routine während der Ausführung nicht angehalten werden kann und somit andere Datei-E/A-Anforderungen blockiert werden.
Jeder erfolgreiche Aufruf von FsRtlEnterFileSystem muss durch einen nachfolgenden Aufruf von FsRtlExitFileSystem abgeglichen werden.
Dateisystemfiltertreiber können die Übermittlung normaler Kernel-APCs durch Aufrufen von FsRtlEnterFileSystem oder KeEnterCriticalRegion vor IoCallDriver nur dann deaktivieren, wenn sich FsRtlExitFileSystem oder KeLeaveCriticalRegion in derselben Dispatchroutine befindet. Sie sollten fsRtlEnterFileSystem oder KeEnterCriticalRegion vor IoCallDriver nicht aufrufen und dann FsRtlExitFileSystem oder KeLeaveCriticalRegion in der Abschlussroutine des IRP aufrufen. Driver Verifier verfügt über eine Regel, mit der diese Bedingung abgefangen werden kann.
Dateisystemfiltertreiber sollten normale Kernel-APCs vor dem Abrufen einer Ressource deaktivieren. Dateisystemfiltertreiber rufen Ressourcen mit den folgenden Routinen ab:
- ExAcquireResourceExclusive
- ExAcquireResourceExclusiveLite
- ExAcquireResourceShared
- ExAcquireResourceSharedLite
- ExAcquireSharedStarveExclusive
- ExAcquireSharedWaitForExclusive
Als Alternative zu FsRtlEnterFileSystem können Minifiltertreiber die Routinen FltAcquireResourceExclusive, FltAcquireResourceShared und FltReleaseResource verwenden, die APCs beim Abrufen und Freigeben einer Ressource ordnungsgemäß verarbeiten.
Anforderungen
Anforderungstyp | Anforderung |
---|---|
Header | Ntifs.h (include Ntifs.h) |
IRQL | <= APC_LEVEL |
Weitere Informationen
ExAcquireResourceExclusiveLite
ExAcquireSharedWaitForExclusive