IDE_HW_INTERRUPT - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// irb.h

IDE_HW_INTERRUPT IdeHwInterrupt;

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

View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nc-irb-ide_hw_interrupt)

IDE_HW_INTERRUPT callback function

Description

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.

Parameters

ChannelExtension [in]

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.

See also

AtaPortCompleteAllActiveRequests

AtaPortDeviceBusy

AtaPortRequestWorkerRoutine