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.