Control de solicitudes a periféricos de almacenamiento
Para todas las solicitudes que requieren que el controlador de puerto de almacenamiento ejecute una solicitud a través de un bus subyacente, el controlador de clase debe configurar un IRP con un bloque de solicitudes SCSI (SRB) que contenga un bloque de descriptor de comandos SCSI (CDB). Por lo tanto, la mayoría de los controladores de clase de almacenamiento tienen una o varias rutinas de BuildRequest internas para compilar SRB. Para obtener más información sobre estas rutinas, vea Rutina BuildRequest del controlador de clase de almacenamiento.
Los controladores de clase de almacenamiento también pasan IRP_MJ_SCSI solicitudes al controlador de puerto de almacenamiento subyacente. Esta solicitud puede originarse en un controlador de filtro de almacenamiento.
Para las solicitudes de IOCTL_SCSI_PASS_THROUGH , que se describen en Control de solicitudes de Pass-Through SCSI, el controlador de clase es responsable de establecer el código MinorFunction en IRP_MJ_DEVICE_CONTROL en la ubicación de pila de E/S del controlador de puerto del IRP antes de pasar la solicitud de IRP_MJ_DEVICE_CONTROL al controlador de puerto con IoCallDriver.
Cada controlador de clase de almacenamiento es responsable de dividir las solicitudes de transferencia (IRP_MJ_READ o IRP_MJ_WRITE) que superen las funcionalidades del HBA subyacente. Por lo tanto, la mayoría de los controladores de clase también llaman a una rutina SplitTransferRequest interna, descrita en La rutina SplitTransferRequest del controlador de clase de almacenamiento, o implementan la misma funcionalidad en sus rutinas de envío para solicitudes de lectura y escritura.
Para obtener información adicional sobre el control de solicitudes a periféricos de almacenamiento, consulte los temas siguientes:
Control de solicitudes de Pass-Through SCSI
Control de solicitudes PnP a periféricos de almacenamiento
Control de solicitudes de energía a periféricos de almacenamiento