A.4.5.8 Return from HwScsiStartIo
Every HwScsiStartIo routine must return TRUE, indicating that the input request was processed.
If the HwScsiStartIo routine cannot carry out a requested operation when it is called, HwScsiStartIo should do the following:
1.Set the input SRB’s SrbStatus to SRB_STATUS_BUSY.
2.Call ScsiPortNotification with the NotificationType RequestComplete and with the input SRB.
3.Call ScsiPortNotification with the NotificationType NextRequest if the driver can accept a request to a different target logical unit than the one in the just completed SRB.
4.Return TRUE.
The port driver resubmits any request returned with the SrbStatus value SRB_STATUS_BUSY to the miniport’s HwScsiStartIo routine later.
Eventually, every miniport driver must call ScsiPortNotification twice for each SRB input to its HwScsiStartIo routine: first, to complete the request (NotificationType RequestComplete) and, second, to tell the port driver to call the HwScsiStartIo routine again with the next SRB (NotificationType NextRequest or NextLuRequest).
The HwScsiStartIo routine of a miniport driver that manages its HBA exclusively by polling calls ScsiPortNotification with the NotificationType RequestTimerCall and a pointer to its HwScsiTimer routine. For more information about the HwScsiTimer routine, see Section A.4.9.