FltGetDiskDeviceObject-Funktion (fltkernel.h)

Die FltGetDiskDeviceObject-Routine gibt einen Zeiger auf das Datenträgergeräteobjekt zurück, das einem bestimmten Volume zugeordnet ist.

Syntax

NTSTATUS FLTAPI FltGetDiskDeviceObject(
  [in]  PFLT_VOLUME    Volume,
  [out] PDEVICE_OBJECT *DiskDeviceObject
);

Parameter

[in] Volume

Undurchsichtiger Zeiger für das Volume. Dieser Parameter ist erforderlich und darf nicht NULL sein.

[out] DiskDeviceObject

Zeiger auf eine vom Aufrufer zugewiesene Variable, die den Geräteobjektzeiger empfängt. Bei jedem Fehler wird dieser Parameter nicht geändert.

Rückgabewert

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

Rückgabecode Beschreibung
STATUS_FLT_NO_DEVICE_OBJECT Das angeforderte Geräteobjekt ist für das angegebene Volume nicht vorhanden. Dies ist ein Fehlercode.

Hinweise

FltGetDiskDeviceObject ruft einen Zeiger auf das Speichergeräteobjekt für den physischen Datenträger ab, auf dem sich das Volume befindet. Das Speichergerät muss kein tatsächlicher Datenträger sein.

FltGetDiskDeviceObject erhöht die Verweisanzahl für den in DiskDeviceObject zurückgegebenen Geräteobjektzeiger. Wenn dieser Zeiger nicht mehr benötigt wird, muss der Aufrufer diese Verweisanzahl durch Aufrufen von ObDereferenceObject verringern. Andernfalls wird verhindert, dass das System das Geräteobjekt aufgrund des ausstehenden Verweises freigibt oder löscht. Daher muss jeder erfolgreiche Aufruf von FltGetDiskDeviceObject durch einen nachfolgenden Aufruf von ObDereferenceObject abgeglichen werden.

Ein Minifilter darf FltGetDiskDeviceObject nur in einem E/A-bezogenen Rückruf aufrufen. Andernfalls sind die Felder des zurückgegebenen Geräteobjekts möglicherweise ungültig. Dies ist bei Rückrufroutinen wie InstanceTeardownStartCallback und InstanceTeardownCompleteCallback der Fall.

Um einen Zeiger auf das Volume Device Object (VDO) des Filter-Managers für ein bestimmtes Volume abzurufen, rufen Sie FltGetDeviceObject auf.

Rufen Sie FltGetVolumeFromDeviceObject auf, um einen undurchsichtigen Volumezeiger für das Volume abzurufen, das durch ein Volumegeräteobjekt dargestellt wird.

Weitere Informationen zu Volumegeräteobjekten finden Sie unter Dateisystemstapel.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header fltkernel.h (include Fltkernel.h)
Bibliothek Fltmgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

Weitere Informationen

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject