Freigeben über


FltOpenVolume-Funktion (fltkernel.h)

Die FltOpenVolume Routine gibt ein Handle und einen Dateiobjektzeiger für das Dateisystemvolume zurück, an das eine bestimmte Minifiltertreiberinstanz angefügt ist.

Syntax

NTSTATUS FLTAPI FltOpenVolume(
  [in]  PFLT_INSTANCE Instance,
  [out] PHANDLE       VolumeHandle,
  [out] PFILE_OBJECT  *VolumeFileObject
);

Parameter

[in] Instance

Undurchsichtiger Instanzzeiger für die Instanz. Diese Instanz muss an ein lokales Volume angefügt werden.

[out] VolumeHandle

Handle für das Dateisystemvolume.

[out] VolumeFileObject

Zeigen Sie auf eine vom Aufrufer zugewiesene Variable, die einen Dateiobjektzeiger für das Stammverzeichnis des Volumes empfängt. Dieser Parameter ist optional und kann NULL-werden.

Rückgabewert

FltOpenVolume gibt STATUS_SUCCESS oder einen geeigneten NTSTATUS-Wert wie den folgenden zurück:

Rückgabecode Beschreibung
STATUS_FLT_DELETING_OBJECT
Die Instanz oder das Volume wird heruntergerissen. Dies ist ein Fehlercode.
STATUS_INVALID_PARAMETER
Die Instanz ist an ein Netzwerkvolume angefügt. Dies ist ein Fehlercode.

Bemerkungen

Wenn das im VolumeHandle- Parameter zurückgegebene Handle nicht mehr benötigt wird, muss der Aufrufer es freigeben, indem FltCloseaufgerufen wird. Daher muss jeder erfolgreiche Aufruf von FltOpenVolume mit einem nachfolgenden Aufruf von FltCloseabgeglichen werden.

Wenn ein Dateiobjektzeiger im VolumeFileObject Parameter zurückgegeben wird, muss der Aufrufer ihn freigeben, wenn er nicht mehr benötigt wird, indem ObDereferenceObjectaufgerufen wird.

Die vom parameter Instance angegebene Instanz muss an ein lokales Volume angefügt werden. Wenn es an ein Netzwerkvolume angefügt ist, gibt FltOpenVolume STATUS_INVALID_PARAMETER zurück.

Rufen Sie FltGetDeviceObjectauf, um einen Zeiger auf das Geräteobjekt für ein bestimmtes Volume abzurufen.

Rufen Sie FltQueryVolumeInformationauf, um detaillierte Informationen über das Volume abzurufen, an das eine bestimmte Instanz angefügt ist.

HINWEIS: Rufen Sie diese Routine nicht mit einem IRP-Wert auf nicht NULL-Ebene auf, da dies zu einem System-Deadlock führen kann. Um festzustellen, ob der Thread TopLevelIrp festgelegt wird, rufen Sie IoGetTopLevelIrpauf.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Microsoft Windows 2000 UpdateRollup 1 für SP4, Windows XP SP3, Windows Server 2003 SP1 und höheren Versionen des Windows-Betriebssystems.
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library FltMgr.lib
DLL- Fltmgr.sys
IRQL- PASSIVE_LEVEL

Siehe auch

FltClose

FltGetDeviceObject

FltGetFilterFromInstance

FltObjectDereference-

FltQueryVolumeInformation

ObDereferenceObject