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 |