Ejemplo de objeto device para un HBA SCSI
En la ilustración siguiente se muestran los objetos de dispositivo creados para el sistema con un controlador PCI IEEE 1394 y un adaptador SCSI PCI con un dispositivo de disco cd-ROM y particionable conectado. Los objetos para dispositivos conectados al controlador IEEE 1394 se muestran y se describen en Ejemplo de objeto de dispositivo para un controlador IEEE 1394.
Árbol de objetos de dispositivo para dispositivos CD-ROM y de disco en un HBA SCSI
A partir de la parte inferior de la ilustración, se describe cada objeto de dispositivo y su controlador asociado:
El controlador de bus de almacenamiento crea el FDO para el bus de almacenamiento y lo adjunta al PDO del bus de almacenamiento creado por el administrador de PnP (no se muestra en esta ilustración). La estructura del árbol de objetos de dispositivo debajo del FDO del bus de almacenamiento depende del bus de almacenamiento y de cómo se integra en el sistema. Los controladores de almacenamiento por encima del nivel de controlador de puerto no interactúan con ninguno de estos objetos inferiores.
En esta ilustración se muestra el FDO del bus de almacenamiento creado por el controlador de bus PCI para un sistema con un bus PCI.
El controlador de bus PCI enumera y crea un PDO para cada adaptador de almacenamiento en su bus. El controlador de puerto de almacenamiento correspondiente crea un FDO y lo adjunta al PDO para su adaptador.
En esta ilustración se muestran dos PPO de adaptador: uno para un controlador IEEE 1394 (descrito en Ejemplo de objeto de dispositivo para un controlador IEEE 1394) y otro para un HBA SCSI. El controlador de puerto SCSI y un controlador de minipuerto asociado crean un FDO y lo conectan al PDO del adaptador SCSI.
El controlador de puerto de almacenamiento virtualiza los dispositivos de destino mediante la creación de un PDO para cada dispositivo de destino conectado a su adaptador. En esta ilustración se muestran dos PPO creados por los controladores de puerto o miniport SCSI: uno para una unidad de disco duro y otro para un CD-ROM.
Uno o varios controladores de filtro pueden adjuntar un objeto de dispositivo de filtro (DO de filtro) a un PDO de dispositivo de destino exportado por un controlador de puerto de almacenamiento. Este controlador de filtro puede interceptar y modificar las solicitudes enviadas por el controlador de clase al dispositivo de destino, por ejemplo, para solucionar problemas específicos del dispositivo sin necesidad de cambios específicos del hardware en los controladores genéricos de clase o puerto.
En esta ilustración se muestra un filtro DO conectado por un controlador de filtro de audio de CD al PDO de CD-ROM.
Un controlador de clase de almacenamiento crea un FDO y lo adjunta al siguiente objeto de dispositivo inferior, que es un PDO de dispositivo de destino exportado por un controlador de puerto de almacenamiento o un do de filtro conectado a la pila mediante un controlador de filtro intermedio. El controlador de clase emite todas las solicitudes posteriores al dispositivo de almacenamiento a través del objeto de dispositivo del controlador inferior.
En esta ilustración se muestran dos FDO de este tipo: uno que representa un dispositivo CD-ROM y otro que representa la partición 0 de una unidad de disco duro. La partición 0 representa todo el disco sin procesar y siempre existe si la unidad está particionada o no.
Un controlador de clase también puede actuar como controlador de autobús, devolviendo una lista de PNP cuando el administrador de PnP consulta sus dispositivos secundarios (IRP_MN_QUERY_DEVICE_RELATIONS con BusRelations). Por ejemplo, un controlador de un dispositivo multimedia con particiones, como un disco extraíble, podría devolver una lista de PDO que representan sus particiones. Los controladores de nivel superior asocian FDO a estos PPO.
En esta ilustración se muestran tres PPO de este tipo, cada uno que representa una partición de disco que se puede abordar como un dispositivo de destino.
En el caso de un disco fijo, el administrador de particiones se asocia al FDO que representa la partición 0 y controla las operaciones PnP en nombre de todas las particiones. Las actividades del administrador de particiones son transparentes para el controlador de clase de disco y los controladores de filtro de nivel superior.
Uno o varios controladores de filtro se pueden adjuntar encima de un controlador de clase. A diferencia de un controlador de filtro de nivel inferior, un controlador de filtro de nivel superior intercepta los IRP enviados al controlador de clase y puede modificarlos antes de reenviarlos al objeto de dispositivo siguiente inferior. El controlador de filtro puede interceptar las solicitudes de lectura y escritura y transformar los datos según sea necesario, así como definir códigos de control de E/S adicionales (IOCTLs), por ejemplo, para permitir que una aplicación de usuario proporcione contraseñas u otra información relacionada.
En esta ilustración se muestra un filtro DO creado por un controlador de filtro de cifrado de disco y conectado al PDO de disco para la partición 1.