Partager via


FltAttachVolume, fonction (fltkernel.h)

FltAttachVolume crée une instance de pilote minifilter 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 l’instance de pilote minifilter doit être attachée. Ce paramètre est obligatoire et ne peut pas être NULL.

[in, optional] InstanceName

Pointeur vers une structure UNICODE_STRING contenant le nom de l’instance pour la nouvelle instance. Ce paramètre est facultatif et peut être NULL. S’il s’agit NULL, FltAttachVolume tente de lire le nom d’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 d’instance opaque pour l’instance nouvellement créée. Ce paramètre est facultatif et peut être NULL.

Valeur de retour

FltAttachVolume retourne STATUS_SUCCESS ou une valeur NTSTATUS appropriée, par exemple l’une des valeurs suivantes :

Retourner le code Description
STATUS_FLT_DELETING_OBJECT
Le de de filtre de spécifié ou volume est détruit. 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 d’instance lus à partir du Registre. Il s’agit d’un code d’erreur.

Remarques

Si l’appelant spécifie une valeurNULL non pour Nom_instance, FltAttachVolume lit tous les attributs d’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 dans 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 nom_instance, FltAttachVolume utilise le nom stocké dans le registre sous HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance pour la partie Nom_instance du chemin d’accès au Registre.

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

FltAttachVolume retourne un pointeur d’instance opaque pour la nouvelle instance dans *RetInstance. Cette valeur de pointeur identifie de manière unique l’instance du pilote minifilter et reste constante tant que l’instance est attachée au volume.

FltAttachVolume ajoute une référence d’exécution au pointeur d’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 une instance de pilote minifilter à un volume à une altitude donnée, appelez FltAttachVolumeAtAltitude.

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

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

Exigences

Exigence Valeur
plateforme cible Universel
d’en-tête fltkernel.h (include Fltkernel.h)
bibliothèque FltMgr.lib
IRQL PASSIVE_LEVEL

Voir aussi

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING