FltOpenVolume-Funktion (fltkernel.h)

Die FltOpenVolume-Routine gibt ein Handle und einen Dateiobjektzeiger für das Dateisystemvolume zurück, an das ein bestimmter Minifiltertreiber instance angefügt ist.

Syntax

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

Parameter

[in] Instance

Undurchsichtiger instance Zeiger für die instance. Diese instance muss an ein lokales Volume angefügt werden.

[out] VolumeHandle

Handle für das Dateisystemvolume.

[out] VolumeFileObject

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

Rückgabewert

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

Rückgabecode Beschreibung
STATUS_FLT_DELETING_OBJECT
Das instance oder Volume wird abgerissen. Dies ist ein Fehlercode.
STATUS_INVALID_PARAMETER
Die instance ist an ein Netzwerkvolume angefügt. Dies ist ein Fehlercode.

Hinweise

Wenn das im VolumeHandle-Parameter zurückgegebene Handle nicht mehr benötigt wird, muss der Aufrufer es durch Aufrufen von FltClose freigeben. Daher muss jeder erfolgreiche Aufruf von FltOpenVolume durch einen nachfolgenden Aufruf von FltClose abgeglichen werden.

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

Die durch den Instance-Parameter angegebene instance muss an ein lokales Volume angefügt werden. Wenn es an ein Netzwerkvolume angefügt ist, gibt FltOpenVolume STATUS_INVALID_PARAMETER zurück.

Um einen Zeiger auf das Geräteobjekt für ein bestimmtes Volume abzurufen, rufen Sie FltGetDeviceObject auf.

Rufen Sie FltQueryVolumeInformation auf, um detaillierte Informationen über das Volume abzurufen, an das ein instance angefügt ist.

HINWEIS: Rufen Sie diese Routine nicht mit einem Nicht-NULL-IRP-Wert der obersten Ebene auf, da dies zu einem System deadlock führen kann. Um zu bestimmen, ob der Thread TopLevelIrp festgelegt ist, rufen Sie IoGetTopLevelIrp auf.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (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 Universell
Header fltkernel.h (include Fltkernel.h)
Bibliothek FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

Weitere Informationen

FltClose

FltGetDeviceObject

FltGetFilterFromInstance

FltObjectDereference

FltQueryVolumeInformation

ObDereferenceObject