Partager via


Fonction FltGetDiskDeviceObject (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 avoir la valeur NULL.

[out] DiskDeviceObject

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

Valeur retournée

FltGetDiskDeviceObject retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, telle que la suivante :

Code de retour 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. Le périphérique 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 d’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. Le fait de ne pas le faire empêche le système de libérer ou de supprimer l’objet d’appareil en raison de la référence en suspens. Ainsi, chaque appel réussi à FltGetDiskDeviceObject doit être mis en correspondance par un appel suivant à ObDereferenceObject.

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

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

Pour obtenir un pointeur de volume opaque pour le volume représenté par un objet de périphérique de volume, appelez FltGetVolumeFromDeviceObject.

Pour plus d’informations sur les objets d’appareil de volume, consultez Piles du système de fichiers.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque Fltmgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

Voir aussi

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject