Compartir a través de


Modelo de E/S de puerto SCSI

El controlador de puerto SCSI se comunica con su controlador de minipuerto mediante una serie de punteros a rutinas de devolución de llamada del controlador de miniporte en su tabla de distribución y objeto de controlador. El controlador de minipuerto llama a ScsiPortInitialize desde su rutina DriverEntry para inicializar la tabla de distribución y el objeto de controlador del puerto SCSI con estos punteros de devolución de llamada. Uno de estos punteros de devolución de llamada es el punto de entrada de la rutina de E/S de inicio del controlador de miniporte que se usa para procesar solicitudes de E/S. El controlador de puerto asigna este puntero al miembro DriverStartIo del objeto de controlador.

Cada vez que el puerto SCSI recibe una solicitud de E/S de un controlador de nivel superior, pone en cola la solicitud en una cola interna. Para obtener más información sobre las colas internas del puerto SCSI, consulte Administración de colas del controlador de puerto SCSI.

Una vez que el dispositivo de destino esté listo para recibir la siguiente solicitud de E/S, el puerto SCSI llama a IoStartPacket, que a su vez llama a la rutina de devolución de llamada de inicio de E/S del controlador de miniporte que se almacena en DriverObject-DriverStartIo>. Para obtener información sobre la operación y las características necesarias de la rutina de E/S de inicio del controlador de minipuerto, consulte Rutina HwScsiStartIo del controlador miniport SCSI.

El puerto SCSI genera el IRQL del procesador antes de llamar a la rutina de inicio de E/S del controlador de miniporte, con el fin de enmascarar las interrupciones y garantizar que la rutina de E/S de inicio haya sincronizado el acceso a las estructuras críticas del sistema operativo y del controlador.

Aunque el flujo de paquetes de solicitud de E/S entre un controlador de clase de almacenamiento y el controlador de puerto SCSI es asincrónico, el flujo de paquetes de solicitud de E/S entre el controlador de puerto SCSI y el dispositivo de destino es sincrónico. El puerto SCSI usa un sistema de puesta en cola interno que permite que los controladores de clase envíen nuevas solicitudes de E/S al puerto SCSI antes de que se hayan completado las solicitudes de E/S anteriores. Sin embargo, el puerto SCSI no envía la siguiente solicitud de E/S al dispositivo de destino hasta que reciba la notificación del controlador de miniporte que el controlador de miniporte está listo para recibir la siguiente solicitud de E/S. El controlador de minipuerto notifica al puerto SCSI mediante una llamada a la rutina de biblioteca ScsiPortNotification .

Storport Driver ofrece un modelo de E/S más flexible, en particular con respecto al enmascaramiento de interrupciones. Para obtener información sobre las diferencias entre el modelo de E/S de Storport y el modelo de E/S de puertos SCSI, consulte Modelo de E/S de Storport.