Freigeben über


FsRtlExitFileSystem-Funktion

Das FsRtlExitFileSystem-Makro ermöglicht erneut die Übermittlung normaler Kernelmodus-APCs, die ein vorheriger Aufruf von FsRtlEnterFileSystem deaktiviert hat.

Syntax

VOID FsRtlExitFileSystem(
   VOID 
);

Parameter

Keine

Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Hinweise

Jede Dateisystemtreiber-Einstiegspunktroutine muss FsRtlEnterFileSystem unmittelbar vor dem Abrufen einer Ressource aufrufen, die für die Ausführung 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 kann.

Jeder erfolgreiche Aufruf von FsRtlEnterFileSystem muss durch einen nachfolgenden Aufruf von FsRtlExitFileSystem abgeglichen werden.

Im Gegensatz zu lokalen Dateisystemen und Netzwerkumleitungen sollten Dateisystemfiltertreiber niemals die Übermittlung normaler Kernel-APCs (durch Aufrufen von FsRtlEnterFileSystem oder KeEnterCriticalRegion oder durch Hochsetzen auf IRQL APC_LEVEL) über einen Aufruf von IoCallDriver deaktivieren.

Der einzige Zeitpunkt, in dem ein Dateisystemfiltertreiber normale Kernel-APCs deaktivieren sollte, ist unmittelbar vor dem Aufrufen von ExAcquireResourceExclusive, ExAcquireResourceExclusiveLite, ExAcquireResourceSharedShared,ExAcquireResourceSharedLite oder ExAcquireSharedStarveExclusive. Nachdem der Filtertreiber ExReleaseResource oder ExReleaseResourceLite aufgerufen hat, sollte er die Übermittlung normaler Kernel-APCs sofort wieder aktivieren. Alternativ zu FsRtlEnterFileSystem können Minifiltertreiber die Routinen FltAcquireResourceExclusive, FltAcquireResourceShared und FltReleaseResource verwenden, die APCs beim Abrufen und Freigeben einer Ressource ordnungsgemäß verarbeiten.

Es ist nicht erforderlich, normale Kernel-APCs vor dem Aufruf von ExAcquireSharedWaitForExclusive zu deaktivieren, da diese Routine KeRaiseIrqlToDpcLevel aufruft, wodurch sowohl normale als auch spezielle Kernel-APCs deaktiviert werden. Es ist auch nicht erforderlich, dies vor dem Aufrufen von ExAcquireFastMutex oder ExAcquireResourceExclusive zu tun, da diese Routinen normale Kernel-APCs deaktivieren.

Anforderungen

Anforderungstyp Anforderung
Header Ntifs.h (include Ntifs.h)
IRQL <= APC_LEVEL

Weitere Informationen

ExAcquireFastMutex

ExAcquireResourceExclusive

ExAcquireResourceExclusiveLite

ExAcquireResourceShared

ExAcquireResourceSharedLite

ExAcquireSharedWaitForExclusive

ExAcquireSharedStarveExclusive

ExReleaseResource

ExReleaseResourceLite

ExTryToAcquireFastMutex

FltAcquireResourceExclusive

FltAcquireResourceShared

FltReleaseResource

FsRtlEnterFileSystem

IoCallDriver

KeLeaveCriticalRegion

KeRaiseIrqlToDpcLevel