Freigeben über


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 kann nicht NULL-werden.

[out] DiskDeviceObject

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

Rückgabewert

FltGetDiskDeviceObject gibt STATUS_SUCCESS oder einen geeigneten 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.

Bemerkungen

FltGetDiskDeviceObject ruft einen Zeiger auf das Speichergerätobjekt 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 Geräteobjektzeiger, der in DiskDeviceObjectzurückgegeben wird. Wenn dieser Zeiger nicht mehr benötigt wird, muss der Aufrufer diese Verweisanzahl erhöhen, indem ObDereferenceObjectaufgerufen wird. Andernfalls wird verhindert, dass das System das Geräteobjekt aufgrund des ausstehenden Verweises freigibt oder löscht. Daher muss jeder erfolgreiche Aufruf von FltGetDiskDeviceObject mit einem nachfolgenden Aufruf von ObDereferenceObjectabgeglichen werden.

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

Rufen Sie FltGetDeviceObjectauf, um einen Zeiger auf das Volume des Volume -Objekts (Volume Device Object, VDO) des Filter-Managers abzurufen.

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

Weitere Informationen zu Volumegeräteobjekten finden Sie unter Dateisystemstapel.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- fltkernel.h (include Fltkernel.h)
Library Fltmgr.lib
DLL- Fltmgr.sys
IRQL- <= DISPATCH_LEVEL

Siehe auch

FltGetDeviceObject-

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject-