Partager via


Fonction FltAttachVolume (fltkernel.h)

FltAttachVolume crée un pilote minifilter instance et l’attache au volume donné.

Syntaxe

NTSTATUS FLTAPI FltAttachVolume(
  [in, out]      PFLT_FILTER      Filter,
  [in, out]      PFLT_VOLUME      Volume,
  [in, optional] PCUNICODE_STRING InstanceName,
  [out]          PFLT_INSTANCE    *RetInstance
);

Paramètres

[in, out] Filter

Pointeur de filtre opaque pour l’appelant. Ce paramètre est obligatoire et ne peut pas être NULL.

[in, out] Volume

Pointeur de volume opaque pour le volume auquel le pilote minifilter instance doit être attaché. Ce paramètre est obligatoire et ne peut pas être NULL.

[in, optional] InstanceName

Pointeur vers une structure de UNICODE_STRING contenant le nom instance de la nouvelle instance. Ce paramètre est facultatif et peut être NULL. S’il est NULL, FltAttachVolume tente de lire le nom de instance par défaut du pilote minifilter à partir du Registre. (Pour plus d’informations sur ce paramètre, consultez la section Remarques suivante.)

[out] RetInstance

Pointeur vers une variable allouée par l’appelant qui reçoit un pointeur de instance opaque pour le instance nouvellement créé. Ce paramètre est facultatif et peut être NULL.

Valeur retournée

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

Code de retour Description
STATUS_FLT_DELETING_OBJECT
Le filtre ou le volume spécifié est en cours de démont. Il s’agit d’un code d’erreur.
STATUS_FLT_FILTER_NOT_READY
Le pilote minifilter n’a pas démarré le filtrage. Pour plus d’informations, consultez FltStartFiltering. Il s’agit d’un code d’erreur.
STATUS_FLT_INSTANCE_NAME_COLLISION
Une instance existe déjà avec ce nom sur le volume spécifié.
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolume a rencontré un échec d’allocation de pool. Il s’agit d’un code d’erreur.
STATUS_OBJECT_NAME_COLLISION
Une autre instance a déjà été attachée à l’altitude spécifiée dans les attributs instance qui ont été lus à partir du registre. Il s’agit d’un code d’erreur.

Remarques

Si l’appelant spécifie une valeur non NULL pour InstanceName, FltAttachVolume lit les attributs instance spécifiés par le pilote minifilter stockés dans le Registre sous HKLM\CurrentControlSet\Services\ServiceName\Instances\InstanceName, où ServiceName est le nom du service du pilote minifilter. Ce nom de service est spécifié dans la directive AddService de la section DefaultInstall.Services du fichier INF du pilote minifilter. (Pour plus d’informations sur les fichiers INF du pilote de filtre, consultez Installation d’un pilote de filtre de système de fichiers.)

Si l’appelant ne spécifie pas de valeur pour InstanceName, FltAttachVolume utilise le nom stocké dans le Registre sous HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance pour la partie InstanceName du chemin du Registre.

Le nom instance spécifié dans le paramètre InstanceName doit être unique dans le système.

FltAttachVolume retourne un pointeur de instance opaque pour le nouveau instance dans *RetInstance. Cette valeur de pointeur identifie de manière unique le pilote minifilter instance et reste constante tant que le instance est attaché au volume.

FltAttachVolume ajoute une référence d’arrêt au pointeur de instance opaque retourné dans *RetInstance. Lorsque ce pointeur n’est plus nécessaire, l’appelant doit le libérer en appelant FltObjectDereference. Ainsi, chaque appel réussi à FltAttachVolume doit être mis en correspondance par un appel ultérieur à FltObjectDereference.

Pour attacher un pilote minifilter instance à un volume à une altitude donnée, appelez FltAttachVolumeAtAltitude.

Pour comparer les altitudes de deux instances de pilotes minifilter attachées au même volume, appelez FltCompareInstanceAltitudes.

Pour détacher un pilote minifilter instance d’un volume, appelez FltDetachVolume.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
IRQL PASSIVE_LEVEL

Voir aussi

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING