Partager via


FltGetDiskDeviceObject, fonction (fltkernel.h)

La routine FltGetDiskDeviceObject retourne un pointeur vers l’objet de périphérique de disque associé à un volume donné.

Syntaxe

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

Paramètres

[in] Volume

Pointeur opaque pour le volume. Ce paramètre est obligatoire et ne peut pas être NULL.

[out] DiskDeviceObject

Pointeur vers une variable allouée par l’appelant qui reçoit le pointeur d’objet de l’appareil. En cas d’erreur, ce paramètre n’est pas modifié.

Valeur de retour

FltGetDiskDeviceObject retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, par exemple :

Retourner le code Description
STATUS_FLT_NO_DEVICE_OBJECT L’objet d’appareil demandé n’existe pas pour le volume donné. Il s’agit d’un code d’erreur.

Remarques

FltGetDiskDeviceObject récupère un pointeur vers l’objet de périphérique de stockage pour le disque physique où réside le volume. L’appareil de stockage n’a pas besoin d’être un disque réel.

FltGetDiskDeviceObject incrémente le nombre de références sur le pointeur d’objet de l’appareil retourné dans DiskDeviceObject. Lorsque ce pointeur n’est plus nécessaire, l’appelant doit décrémenter ce nombre de références en appelant ObDereferenceObject. L’échec de cette opération empêche le système de libérer ou de supprimer l’objet de l’appareil en raison de la référence en attente. Ainsi, chaque appel réussi à FltGetDiskDeviceObject doit être mis en correspondance par un appel ultérieur à ObDereferenceObject.

Un minifilter doit appeler FltGetDiskDeviceObject uniquement dans un rappel lié aux E/S. Sinon, les champs de l’objet d’appareil retournés peuvent ne pas être valides. Cela est le cas dans les routines de rappel telles que InstanceTeardownStartCallback et InstanceTeardownCompleteCallback.

Pour obtenir un pointeur vers l’objet d’appareil de volume du Gestionnaire de filtres (VDO) pour un volume donné, appelez FltGetDeviceObject.

Pour obtenir un pointeur de volume opaque pour le volume représenté par un objet d’appareil de volume, appelez FltGetVolumeFromDeviceObject.

Pour plus d’informations sur les objets d’appareil en volume, consultez piles de systèmes de fichiers.

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête fltkernel.h (include Fltkernel.h)
bibliothèque Fltmgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

Voir aussi

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject