Função FltAttachVolume (fltkernel.h)

FltAttachVolume cria uma nova instância de driver de minifiltro e a anexa ao volume especificado.

Sintaxe

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

Ponteiro de filtro opaco para o chamador. Esse parâmetro é necessário e não pode ser NULL.

[in, out] Volume

Ponteiro de volume opaco para o volume ao qual a instância do driver de minifiltro deve ser anexada. Esse parâmetro é necessário e não pode ser NULL.

[in, optional] InstanceName

Ponteiro para uma estrutura UNICODE_STRING que contém o nome da instância da nova instância. Esse parâmetro é opcional e pode ser NULL. Se for NULL, FltAttachVolume tentará ler o nome da instância padrão do driver de minifiltro do registro. (Para obter mais informações sobre esse parâmetro, consulte a seção Comentários a seguir.)

[out] RetInstance

Ponteiro para uma variável alocada pelo chamador que recebe um ponteiro de instância opaco para a instância recém-criada. Esse parâmetro é opcional e pode ser NULL.

Retornar valor

FltAttachVolume retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como um dos seguintes:

Código de retorno Descrição
STATUS_FLT_DELETING_OBJECT
O Filtro ou Volume especificado está sendo dividido. Este é um código de erro.
STATUS_FLT_FILTER_NOT_READY
O driver de minifiltro não iniciou a filtragem. Para obter mais informações, consulte FltStartFiltering. Este é um código de erro.
STATUS_FLT_INSTANCE_NAME_COLLISION
Já existe uma instância com esse nome no volume especificado.
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolume encontrou uma falha de alocação de pool. Este é um código de erro.
STATUS_OBJECT_NAME_COLLISION
Outra instância já estava anexada na altitude especificada nos atributos de instância que foram lidos do registro. Este é um código de erro.

Comentários

Se o chamador especificar um valor não NULL para InstanceName, FltAttachVolume lerá todos os atributos de instância especificados pelo driver de minifiltro armazenados no registro em HKLM\CurrentControlSet\Services\ServiceName\Instances\InstanceName, em que ServiceName é o nome de serviço do driver de minifiltro. Esse nome de serviço é especificado na diretiva AddService na seção DefaultInstall.Services do arquivo INF do driver de minifiltro. (Para obter mais informações sobre arquivos INF do driver de filtro, consulte Installing a File System Filter Driver.)

Se o chamador não especificar um valor para InstanceName, FltAttachVolume usará o nome armazenado no registro em HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance para a parte InstanceName do caminho do Registro.

O nome da instância especificado no parâmetro InstanceName é necessário para ser exclusivo em todo o sistema.

FltAttachVolume retorna um ponteiro de instância opaco para a nova instância em *RetInstance. Esse valor de ponteiro identifica exclusivamente a instância do driver de minifiltro e permanece constante enquanto a instância estiver anexada ao volume.

FltAttachVolume adiciona uma referência de rundown ao ponteiro de instância opaco retornado em *RetInstance. Quando esse ponteiro não for mais necessário, o chamador deverá liberá-lo chamando FltObjectDereference. Portanto, cada chamada bem-sucedida para FltAttachVolume deve ser correspondida por uma chamada subsequente para FltObjectDereference.

Para anexar uma instância de driver de minifiltro a um volume a uma determinada altitude, chame FltAttachVolumeAtAltitude.

Para comparar as altitudes de duas instâncias de driver de minifiltro anexadas ao mesmo volume, chame FltCompareInstanceAltitudes.

Para desanexar uma instância de driver de minifiltro de um volume, chame FltDetachVolume.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca FltMgr.lib
IRQL PASSIVE_LEVEL

Confira também

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING