Compartir a través de


Función FltAttachVolume (fltkernel.h)

FltAttachVolume crea una nueva instancia del controlador de minifiltro y la asocia al volumen especificado.

Sintaxis

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

Parámetros

[in, out] Filter

Puntero de filtro opaco para el autor de la llamada. Este parámetro es necesario y no se puede null.

[in, out] Volume

Puntero de volumen opaco para el volumen al que se va a adjuntar la instancia del controlador de minifiltro. Este parámetro es necesario y no se puede null.

[in, optional] InstanceName

Puntero a una estructura de UNICODE_STRING que contiene el nombre de instancia de la nueva instancia. Este parámetro es opcional y se puede NULL. Si es NULL , FltAttachVolume intenta leer el nombre de instancia predeterminado del controlador de minifiltro del registro. (Para obtener más información sobre este parámetro, vea la siguiente sección Comentarios).

[out] RetInstance

Puntero a una variable asignada por el autor de la llamada que recibe un puntero de instancia opaco para la instancia recién creada. Este parámetro es opcional y se puede NULL.

Valor devuelto

fltAttachVolume devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como uno de los siguientes:

Código devuelto Descripción
STATUS_FLT_DELETING_OBJECT
El de filtro de especificado o volumen se está descomponiéndose. Se trata de un código de error.
STATUS_FLT_FILTER_NOT_READY
El controlador de minifiltro no ha iniciado el filtrado. Para obtener más información, vea FltStartFiltering. Se trata de un código de error.
STATUS_FLT_INSTANCE_NAME_COLLISION
Ya existe una instancia con este nombre en el volumen especificado.
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolume encontró un error de asignación de grupo. Se trata de un código de error.
STATUS_OBJECT_NAME_COLLISION
Otra instancia ya estaba asociada a la altitud especificada en los atributos de instancia leídos del registro. Se trata de un código de error.

Observaciones

Si el autor de la llamada especifica un valornull que no es null para InstanceName, FltAttachVolume lee los atributos de instancia especificados por el controlador de minifiltro que se almacenan en el registro en HKLM\CurrentControlSet\Services\ServiceName\Instances\InstanceName, donde serviceName es el nombre del servicio del controlador de minifiltro. Este nombre de servicio se especifica en el directiva AddService de la sección DefaultInstall.Services del archivo INF del controlador de minifiltro. (Para obtener más información sobre los archivos INF del controlador de filtro, consulte Instalación de un controlador de filtro del sistema de archivos).

Si el autor de la llamada no especifica un valor para InstanceName, FltAttachVolume usa el nombre almacenado en el registro en HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance para la parte InstanceName de la ruta del Registro.

El nombre de instancia especificado en el parámetro InstanceName debe ser único en todo el sistema.

fltAttachVolume devuelve un puntero de instancia opaco para la nueva instancia en *RetInstance. Este valor de puntero identifica de forma única la instancia del controlador de minifiltro y permanece constante siempre que la instancia esté asociada al volumen.

FltAttachVolume agrega una referencia de ejecución al puntero de instancia opaco devuelto en *RetInstance. Cuando este puntero ya no es necesario, el autor de la llamada debe liberarlo llamando a FltObjectDereference. Por lo tanto, cada llamada correcta a FltAttachVolume debe coincidir con una llamada posterior a FltObjectDereference.

Para adjuntar una instancia de controlador de minifiltro a un volumen a una altitud determinada, llame a FltAttachVolumeAtAltitude.

Para comparar las altitudes de dos instancias de controlador de minifiltro asociadas al mismo volumen, llame a FltCompareInstanceAltitudes.

Para desasociar una instancia de controlador de minifiltro de un volumen, llame a FltDetachVolume.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
encabezado de fltkernel.h (incluya Fltkernel.h)
biblioteca de FltMgr.lib
irQL PASSIVE_LEVEL

Consulte también

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING