Compartir a través de


Rutina HwStorBuildIo sin sincronizar

En el modelo de E/S del controlador de puerto miniport SCSI, la rutina StartIo del controlador de miniporte, HwScsiStartIo, debe transmitir bloques de solicitud SCSI (SRB) al hardware lo antes posible. Esto es esencial, ya que el trabajo realizado en la rutina StartIo del controlador de miniporte se realiza mientras se deshabilitan las interrupciones y en IRQL = DISPATCH_LEVEL. Desafortunadamente, este modelo no es adecuado para los controladores de algunos adaptadores de bus host de alto rendimiento (HBA), ya que los controladores de minipuerto para estas HBA deben realizar una cantidad significativa de procesamiento cuando se inicia la E/S. Si el controlador de minipuerto realiza este procesamiento en su rutina StartIo , degrada el rendimiento del sistema.

El modelo de E/S de Storport admite la rutina HwStorBuildIo en un esfuerzo por quitar parte de la carga de procesamiento de la rutina StartIo del controlador de miniporte, HwStorStartIo. En el modelo de E/S de Storport, el sistema llama a HwStorBuildIo justo antes de llamar a la rutina HwStorStartIo del controlador de miniporte y realiza tanto procesamiento como sea posible allí. Esta estrategia evita la contención de ciclos de CPU y para el acceso a estructuras críticas del sistema, como la extensión del dispositivo, porque HwStorBuildIo se ejecuta en un IRQL inferior y no contiene bloqueos de sincronización.

La rutina HwStorBuildIo debe traducir el SRB a una estructura de datos más cómoda, crear listas de dispersión o recopilación y realizar otro procesamiento por SRB. Dado que no se mantienen bloqueos durante la ejecución de la rutina HwStorBuildIo , el controlador de miniporte no debe tener acceso a datos distintos de los de la extensión SRB y SRB. Si se requiere acceso a otras estructuras para parte del procesamiento, esa parte debe realizarse en la rutina HwStartIo .

Para lograr el máximo rendimiento, se debe usar la rutina HwStorBuildIo junto con el modo dúplex completo.