Every miniport driver must have a HwScsiResetBus routine, which is called with a pointer to the miniport’s device extension for HBA state and the PathId of the bus to be reset. If an attempted bus-reset operation fails or times out, the miniport driver should call ScsiPortLogError and, then, program the HBA for a hard reset.
A bus-reset operation might require the miniport driver to clean up state it maintains in the device extension and/or logical unit extensions for devices on the bus. HwScsiResetBus must complete any outstanding requests by calling ScsiPortCompleteRequest with the SrbStatus value SRB_STATUS_BUS_RESET or, for individual SRBs, ScsiPortNotification with this status value.
After completing the bus-reset request and any outstanding requests, the miniport must call ScsiPortNotification (if it has not already done so) with the NotificationType NextRequest, or NextLuRequest if the HBA supports tagged queueing or multiple requests per logical unit.
Note that the OS-specific port driver manages SCSI bus-reset delays on behalf of miniport drivers.