Função FltOpenVolume (fltkernel.h)

A rotina FltOpenVolume retorna um identificador e um ponteiro de objeto de arquivo para o volume do sistema de arquivos ao qual uma determinada instância de driver de minifiltro está anexada.

Sintaxe

NTSTATUS FLTAPI FltOpenVolume(
  [in]  PFLT_INSTANCE Instance,
  [out] PHANDLE       VolumeHandle,
  [out] PFILE_OBJECT  *VolumeFileObject
);

Parâmetros

[in] Instance

Ponteiro de instância opaco para a instância. Essa instância deve ser anexada a um volume local.

[out] VolumeHandle

Manipule para o volume do sistema de arquivos.

[out] VolumeFileObject

Ponteiro para uma variável alocada pelo chamador que recebe um ponteiro de objeto de arquivo para o diretório raiz do volume. Esse parâmetro é opcional e pode ser NULL.

Retornar valor

FltOpenVolume retorna STATUS_SUCCESS ou um valor NTSTATUS apropriado, como o seguinte:

Código de retorno Descrição
STATUS_FLT_DELETING_OBJECT
A instância ou o volume está sendo dividido. Este é um código de erro.
STATUS_INVALID_PARAMETER
A instância é anexada a um volume de rede. Este é um código de erro.

Comentários

Quando o identificador retornado no parâmetro VolumeHandle não é mais necessário, o chamador deve liberá-lo chamando FltClose. Portanto, cada chamada bem-sucedida para FltOpenVolume deve ser correspondida por uma chamada subsequente para FltClose.

Se um ponteiro de objeto de arquivo for retornado no parâmetro VolumeFileObject , o chamador deverá liberá-lo quando não for mais necessário chamando ObDereferenceObject.

A instância especificada pelo parâmetro Instance deve ser anexada a um volume local. Se estiver anexado a um volume de rede, FltOpenVolume retornará STATUS_INVALID_PARAMETER.

Para obter um ponteiro para o objeto do dispositivo para um determinado volume, chame FltGetDeviceObject.

Para obter informações detalhadas sobre o volume ao qual uma determinada instância está anexada, chame FltQueryVolumeInformation.

OBSERVAÇÃO: não chame essa rotina com um valor IRP de nível superior não NULL, pois isso pode causar um deadlock do sistema. Para determinar se o thread TopLevelIrp está definido, chame IoGetTopLevelIrp.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Pacote Cumulativo de Atualizações do Microsoft Windows 2000 1 para SP4, Windows XP SP3, Windows Server 2003 SP1 e versões posteriores do sistema operacional Windows.
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca FltMgr.lib
DLL Fltmgr.sys
IRQL PASSIVE_LEVEL

Confira também

FltClose

FltGetDeviceObject

FltGetFilterFromInstance

FltObjectDereference

FltQueryVolumeInformation

ObDereferenceObject