Compartir a través de


Función FltGetDiskDeviceObject (fltkernel.h)

La rutina FltGetDiskDeviceObject devuelve un puntero al objeto de dispositivo de disco asociado a un volumen determinado.

Sintaxis

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

Parámetros

[in] Volume

Puntero opaco para el volumen. Este parámetro es obligatorio y no puede ser NULL.

[out] DiskDeviceObject

Puntero a una variable asignada por el autor de la llamada que recibe el puntero del objeto de dispositivo. En cualquier error, este parámetro no se modifica.

Valor devuelto

FltGetDiskDeviceObject devuelve STATUS_SUCCESS o un valor NTSTATUS adecuado, como el siguiente:

Código devuelto Descripción
STATUS_FLT_NO_DEVICE_OBJECT El objeto de dispositivo solicitado no existe para el volumen especificado. Se trata de un código de error.

Comentarios

FltGetDiskDeviceObject recupera un puntero al objeto de dispositivo de almacenamiento para el disco físico donde reside el volumen. El dispositivo de almacenamiento no necesita ser un disco real.

FltGetDiskDeviceObject incrementa el recuento de referencias en el puntero de objeto de dispositivo devuelto en DiskDeviceObject. Cuando este puntero ya no es necesario, el autor de la llamada debe disminuir este recuento de referencias llamando a ObDereferenceObject. Si no lo hace, se impide que el sistema libere o elimine el objeto de dispositivo debido a la referencia pendiente. Por lo tanto, cada llamada correcta a FltGetDiskDeviceObject debe coincidir con una llamada posterior a ObDereferenceObject.

Un minifiltro debe llamar a FltGetDiskDeviceObject solo en una devolución de llamada relacionada con E/S. De lo contrario, es posible que los campos del objeto de dispositivo devuelto no sean válidos. Este caso en rutinas de devolución de llamada, como InstanceTeardownStartCallback e InstanceTeardownCompleteCallback.

Para obtener un puntero al objeto de dispositivo de volumen (VDO) del Administrador de filtros para un volumen determinado, llame a FltGetDeviceObject.

Para obtener un puntero de volumen opaco para el volumen representado por un objeto de dispositivo de volumen, llame a FltGetVolumeFromDeviceObject.

Para obtener más información sobre los objetos de dispositivo de volumen, vea Pilas del sistema de archivos.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library Fltmgr.lib
Archivo DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

Consulte también

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject