Função FltGetDiskDeviceObject (fltkernel.h)

A rotina FltGetDiskDeviceObject retorna um ponteiro para o objeto de dispositivo de disco associado a um determinado volume.

Sintaxe

NTSTATUS FLTAPI FltGetDiskDeviceObject(
  [in]  PFLT_VOLUME    Volume,
  [out] PDEVICE_OBJECT *DiskDeviceObject
);

Parâmetros

[in] Volume

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

[out] DiskDeviceObject

Ponteiro para uma variável alocada pelo chamador que recebe o ponteiro do objeto do dispositivo. Em qualquer erro, esse parâmetro não é modificado.

Retornar valor

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

Código de retorno Descrição
STATUS_FLT_NO_DEVICE_OBJECT O objeto de dispositivo solicitado não existe para o volume fornecido. Este é um código de erro.

Comentários

FltGetDiskDeviceObject recupera um ponteiro para o objeto de dispositivo de armazenamento para o disco físico em que o volume reside. O dispositivo de armazenamento não precisa ser um disco real.

FltGetDiskDeviceObject incrementa a contagem de referência no ponteiro do objeto do dispositivo retornado em DiskDeviceObject. Quando esse ponteiro não é mais necessário, o chamador deve diminuir essa contagem de referência chamando ObDereferenceObject. Não fazer isso impede que o sistema libere ou exclua o objeto de dispositivo devido à referência pendente. Portanto, cada chamada bem-sucedida para FltGetDiskDeviceObject deve ser correspondida por uma chamada subsequente para ObDereferenceObject.

Um minifiltro deve chamar FltGetDiskDeviceObject somente em um retorno de chamada relacionado à E/S. Caso contrário, os campos do objeto de dispositivo retornados podem não ser válidos. Esse é o caso em rotinas de retorno de chamada, como InstanceTeardownStartCallback e InstanceTeardownCompleteCallback.

Para obter um ponteiro para o VDO (objeto de dispositivo de volume) do Gerenciador de Filtros para um determinado volume, chame FltGetDeviceObject.

Para obter um ponteiro de volume opaco para o volume representado por um objeto de dispositivo de volume, chame FltGetVolumeFromDeviceObject.

Para obter mais informações sobre objetos de dispositivo de volume, consulte Pilhas do sistema de arquivos.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca Fltmgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

Confira também

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject