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 necesario y no se puede 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.

Observaciones

FltGetDiskDeviceObject recupera un puntero al objeto de dispositivo de almacenamiento del 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, todas las llamadas correctas a FltGetDiskDeviceObject deben 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 y 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, consulte Pilas del sistema de archivos.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
encabezado de fltkernel.h (incluya Fltkernel.h)
biblioteca de Fltmgr.lib
DLL de Fltmgr.sys
irQL <= DISPATCH_LEVEL

Consulte también

FltGetDeviceObject

FltGetVolumeFromDeviceObject

obDereferenceObject de

ObReferenceObject de