Compartilhar via


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 de 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 por chamador que recebe um ponteiro de instância opaca para a instância recém-criada. Esse parâmetro é opcional e pode ser NULL.

Valor de retorno

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

Código de retorno Descrição
STATUS_FLT_DELETING_OBJECT
O de Filtro de especificado ou de Volume está sendo derrubado. 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
Uma instância já existe 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.

Observações

Se o chamador especificar um valorNULL não 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 Instalando um driver de filtro do sistema de arquivos.)

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 parte 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 desde que a instância esteja 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
da Plataforma de Destino Universal
cabeçalho fltkernel.h (inclua Fltkernel.h)
biblioteca FltMgr.lib
IRQL PASSIVE_LEVEL

Consulte também

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING