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 |
---|---|
|
O Filtro ou Volume especificado está sendo dividido. Este é um código de erro. |
|
O driver de minifiltro não iniciou a filtragem. Para obter mais informações, consulte FltStartFiltering. Este é um código de erro. |
|
Já existe uma instância com esse nome no volume especificado. |
|
FltAttachVolume encontrou uma falha de alocação de pool. Este é um código de erro. |
|
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 |