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 |