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 |
---|---|
|
Le filtre ou le volume spécifié est en cours de démont. Il s’agit d’un code d’erreur. |
|
Le pilote minifilter n’a pas démarré le filtrage. Pour plus d’informations, consultez FltStartFiltering. Il s’agit d’un code d’erreur. |
|
Une instance existe déjà avec ce nom sur le volume spécifié. |
|
FltAttachVolume a rencontré un échec d’allocation de pool. Il s’agit d’un code d’erreur. |
|
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 |