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 |