Rutinas de minipuerto del controlador Storport
Un controlador de minipuerto que funcione con el controlador Storport debe contener implementaciones de las descripciones de rutinas enumeradas en esta sección y debe exponerlas a través de una estructura HW_INITIALIZATION_DATA durante la fase de inicialización del controlador de minipuerto.
Las rutinas del controlador de minipuerto Storport son equivalentes a sus homólogos de puerto SCSI. Sin embargo, hay diferencias importantes entre el diseño del controlador de puerto SCSI y el del controlador Storport, y las rutinas de minipuerto deben adaptarse a esas diferencias.
Por ejemplo:
- Un controlador de minipuerto Storport siempre debe estar preparado para recibir otra solicitud de E/S después de que se complete su rutina HwStorStartIo.
- Un controlador de minipuerto SCSI no tiene este requisito. No recibe una nueva solicitud de E/S hasta que señala explícitamente al controlador de puerto cuándo puede controlar otra solicitud llamando a StorPortNotification.
Si el controlador de minipuerto Storport no puede controlar inmediatamente una solicitud enviada, tiene un conjunto de funciones de administración de colas que le permiten tratar la sobrecarga. Estas funciones de administración de colas no están disponibles para el controlador de minipuerto SCSI. Al igual que el controlador de minipuerto SCSI, el controlador de minipuerto Storport completa la solicitud con SRB_STATUS_BUSY. Pero, a diferencia de la versión del puerto SCSI, también puede marcar la cola de dispositivos como ocupada mediante la rutina StorPortDeviceBusy. Las funciones similares permiten al controlador de minipuerto Storport pausar y reanudar el procesamiento en todo el adaptador.
Para obtener más información sobre las rutinas de soporte proporcionadas por el controlador Storport, consulte Rutinas de soporte del controlador Storport.
Para obtener más información sobre el controlador Storport, consulte Controladores de puerto de almacenamiento.
Lista de rutinas del controlador de minipuerto Storport
Routine | Descripción |
---|---|
HW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE | Controla una interrupción señalizada de mensaje (MSI). |
HW_ADAPTER_CONTROL | Realiza operaciones sincrónicas para controlar el estado o el comportamiento de un adaptador, como detener o reiniciar el HBA para la administración de energía. |
HW_BUILDIO | Procesa la SRB con acceso no asincrónico a estructuras de datos del sistema compartidas antes de pasarla a HwStorStartIo. |
HW_DPC_ROUTINE | Rutina diferida para su ejecución en DISPATCH IRQL con el mecanismo de llamada a procedimiento diferido (DPC). |
HW_FIND_ADAPTER | Usa la configuración proporcionada para determinar si se admite un HBA específico y, si es así, para devolver información de configuración sobre ese adaptador. |
HW_INITIALIZE | Inicializa el controlador de minipuerto después de que se produzca un reinicio del sistema o un error de alimentación. |
HW_INTERRUPT | El controlador Storport llama a la rutina HwStorInterrupt después de que el HBA genere una solicitud de interrupción. |
HW_PASSIVE_INITIALIZE_ROUTINE | Se llama después de la rutina HwStorInitialize cuando el IRQL actual está en PASSIVE_LEVEL. |
HW_RESET_BUS | La llama el controlador de puerto para borrar las condiciones de error. |
HW_STARTIO | El controlador Storport llama a la rutina HwStorStartIo una vez para cada solicitud de E/S entrante. |
HW_TIMER | Se llama después del intervalo especificado cuando el controlador de minipuerto llamó a StorPortNotification con el valor de Tipo de notificación de RequestTimerCall. |
HW_TRACING_ENABLED | Permite que Storport notifique a un minipuerto que está habilitado el seguimiento de eventos. |
HW_UNIT_CONTROL | Se llama para realizar operaciones sincrónicas para controlar el estado del dispositivo de unidad de almacenamiento. Se notifica al controlador de minipuerto que inicie una unidad o controle una transición de estado de alimentación para un dispositivo de unidad. |
HW_WORKITEM | Función de devolución de llamada proporcionada por el minipuerto para procesar una solicitud de elemento de trabajo de Storport. |