BOOLEAN
HwScsiInterrupt(
IN PVOID DeviceExtension
);
HwScsiInterrupt is called when the HBA generates an interrupt. Miniport drivers of HBAs that do not generate interrupts do not have this routine.
If the miniport finds that its HBA did not generate the interrupt, HwScsiInterrupt should return FALSE as soon as possible.
HwScsiInterrupt is responsible for completing interrupt-driven I/O operations. This routine must clear the interrupt on the HBA before it returns TRUE.
Miniport drivers of HBAs that require interrupt processing that takes more than 50 microseconds should have a pair of HwScsi..InterruptsCallback routines. Such a driver’s HwScsiInterrupt routine should do the following, rather than calling ScsiPortStallExecution to tie up the processor while its HBA updates hardware state:
Using this technique improves overall I/O throughput, including that of any other HBAs the miniport driver supports.
If a miniport’s HwScsiInterrupt routine cannot disable interrupts on its HBA but its interrupt-driven transfer operations take more than 50 microseconds in the HwScsiInterrupt routine, the miniport should limit the maximum size for transfers that it accepts. Such a miniport’s HwScsiFindAdapter routine can set the MaximumTransferLength member of the PORT_CONFIGURATION_INFORMATION structure to a value that restricts execution time in the HwScsiInterrupt routine for transfers. The miniport writer should adjust this value during driver development so there is no user-noticeable impact on the performance of the mouse, serial, and/or parallel drivers. Otherwise, the mouse pointer can appear to “jump” or the serial/parallel throughput to degrade noticeably whenever that miniport is transferring data.
HwScsiDisableInterruptsCallback, HwScsiEnableInterruptsCallback, ScsiPortNotification, ScsiPortStallExecution