Compartir a través de


Introducción a los controladores de clase de almacenamiento

Un controlador de clase de almacenamiento usa la interfaz de puerto o clase SCSI bien establecida para controlar un dispositivo de almacenamiento masivo de su tipo en cualquier bus para el que el sistema suministra un controlador de puerto de almacenamiento (actualmente SCSI, IDE, USB e IEEE 1394). El bus concreto al que está conectado un dispositivo de almacenamiento es transparente para el controlador de clase de almacenamiento.

Cualquier controlador de clase de almacenamiento controla las solicitudes de E/S de aplicaciones de usuario o controladores de nivel superior mediante la creación de bloques de solicitudes SCSI (SRB) que contienen bloques de descriptores de comandos (CDB) y enviarlos, a través de controladores de filtro intermedios, al controlador de puerto de almacenamiento subyacente.

Un controlador de clase de almacenamiento no proporciona información de direccionamiento en la SRB. En su lugar, el controlador de puerto (o un controlador aún inferior) es responsable de cualquier direccionamiento necesario. El controlador de puerto de almacenamiento traduce los SRB en el formato requerido por el adaptador de bus de host subyacente (HBA), que puede ser un adaptador de bus host SCSI o 1394, un controlador IDE u otro hardware de este tipo, y emite comandos al dispositivo. En el Kit de controladores de Windows (WDK), el término "HBA" significa cualquier adaptador o controlador subyacente.

Para el administrador de E/S y los controladores de nivel superior superados por encima de un controlador de clase de almacenamiento, la mayoría de los controladores de clase de almacenamiento son controladores intermedios del modo kernel estándar. Por lo tanto, cada controlador de clase debe tener una rutina DriverEntry, una rutina AddDevice, una rutina Unload, una o varias rutinas de IoCompletion, además de las rutinas DispatchPnP y DispatchPower para controlar Plug and Play e IRP de energía.

Un controlador de clase de almacenamiento también debe tener una rutina DispatchSystemControl para controlar los IRP de control del sistema y puede tener cualquier otra rutina de controlador estándar de nivel superior, como una rutina StartIo , según lo determinado por el diseñador de controladores. Para obtener más información sobre el control del sistema y las rutinas estándar del controlador en modo kernel, consulte Rutinas de controlador estándar.

Para el administrador de PnP, un controlador de clase de almacenamiento es un controlador de función, es decir, uno que controla un dispositivo individual. Un controlador de clase de almacenamiento también puede actuar como controladores de bus, enumerando los dispositivos secundarios de sus dispositivos. Por ejemplo, el controlador de clase de un dispositivo multimedia con particiones, como un disco, devuelve una lista de PPO que representan sus particiones. Cada PDO de este tipo se puede abordar como un dispositivo de destino y ser atendido por su propio controlador de clase.

Nota:

Un controlador para un dispositivo SCSI, como una impresora o un escáner, debe implementarse como se describe en esta sección. Un controlador para este tipo de dispositivo SCSI utiliza la misma interfaz de clase/puerto SCSI para controlar su dispositivo y tiene las mismas responsabilidades para controlar IRP, compilar SRB y enviarlos al controlador de puerto subyacente, como lo hace un controlador para un dispositivo de almacenamiento.