Compartilhar via


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 por chamador que recebe o ponteiro do objeto do dispositivo. Em qualquer erro, esse parâmetro não é modificado.

Valor de retorno

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.

Observações

FltGetDiskDeviceObject recupera um ponteiro para o objeto do dispositivo de armazenamento para o disco físico onde reside o volume. 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 for mais necessário, o chamador deverá diminuir essa contagem de referência chamando ObDereferenceObject. A falha ao fazer isso impede que o sistema libere ou exclua o objeto do 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 retornado 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
da Plataforma de Destino Universal
cabeçalho fltkernel.h (inclua Fltkernel.h)
biblioteca Fltmgr.lib
de DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

Consulte também

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject