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 obligatorio y no puede ser NULL.

[in, out] Volume

Puntero de volumen opaco para el volumen al que se va a asociar la instancia del controlador de minifiltro. Este parámetro es obligatorio y no puede ser 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 puede ser 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 puede ser 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 filtro o el volumen especificados se están 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 que se leyeron del registro. Se trata de un código de error.

Comentarios

Si el autor de la llamada especifica un valor distinto de 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 la 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, vea 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 de *RetInstance. Este valor de puntero identifica de forma única la instancia del controlador de minifiltro y permanece constante siempre y cuando la instancia se adjunte al volumen.

FltAttachVolume agrega una referencia de rundown 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 Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library FltMgr.lib
IRQL PASSIVE_LEVEL

Consulte también

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING