Every miniport driver must have a HwResetBus 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. HwResetBus must complete any outstanding requests by calling ScsiPortCompleteRequest with the SrbStatus value SRB_STATUS_BUS_RESET or, for individual SRBs, ScsiPortNotification with this status.
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 queuing or multiple requests per logical unit.