IDE_HW_INTERRUPT callback function (irb.h)

The IdeHwInterrupt miniport driver routine handles interrupts from the host bus adapter (HBA) to which the controller for the miniport driver is connected.

Note  The ATA port driver and ATA miniport driver models may be altered or unavailable in the future. Instead, we recommend using the Storport driver and Storport miniport driver models.
 

Syntax

IDE_HW_INTERRUPT IdeHwInterrupt;

BOOLEAN IdeHwInterrupt(
  [in] PVOID ChannelExtension
)
{...}

Parameters

[in] ChannelExtension

A pointer to the channel extension.

Return value

AtaHwInterrrupt returns TRUE if the interrupt is generated by one of the controller's channels. If a channel did not generate the interrupt, the routine should return FALSE as quickly as possible.

Remarks

The IdeHwInterrupt routine completes interrupt-driven I/O operations.

If the indicated channel did not generate the interrupt, the miniport driver should make a second (recursive) call to the IdeHwInterrupt routine to handle interrupts that are intended for the controller's other channel.

If the miniport driver requires a large amount of time to process the interrupt, it must follow these steps:

  1. Dismiss the interrupt on the HBA.
  2. Disable interrupts on the channel that is indicated by the ChannelExtension parameter.
  3. Request a worker routine by using AtaPortRequestWorkerRoutine.
  4. Complete additional processing in the worker routine.
  5. Enable interrupts on the channel.
The following ATA port routines must not be called from the IdeHwInterrupt routine: However, the miniport driver can request a worker routine and make calls in the worker routine.

The worker routine must clear the interrupt on the HBA before it returns TRUE.

Requirements

Requirement Value
Target Platform Desktop
Header irb.h (include Irb.h)

See also

AtaPortCompleteAllActiveRequests

AtaPortDeviceBusy

AtaPortRequestWorkerRoutine