MiniportHandleInterrupt

VOID
    MiniportHandleInterrupt(
        IN NDIS_HANDLE
 MiniportAdapterContext
        );

MiniportHandleInterrupt is a required function if a driver’s NIC generates interrupts.

Parameters

MiniportAdapterContext
Specifies the handle to a miniport-allocated context area in which the driver maintains per-NIC state, set up by MiniportInitialize.

Comments

MiniportHandleInterrupt does the deferred processing of all outstanding interrupt operations and starts any new operations. That is, the driver’s MiniportISR or MiniportDisableInterrupt function dismisses the interrupt on the NIC, saves any necessary state about the operation, and returns control as quickly as possible, thereby deferring most interrupt-driven I/O operations to MiniportHandleInterrupt.

MiniportHandleInterrupt carries out most operations to indicate receives on NICs that generate interrupts, including but not limited to the following:

MiniportHandleInterrupt also can call NdisSendComplete on packets for which the MiniportSendPackets or Miniport(Wan)Send function returned NDIS_STATUS_PENDING.

If the NIC shares an IRQ, MiniportHandleInterrupt is called only if the MiniportISR function returned InterruptRecognized set to TRUE, thereby indicating that the NIC generated a particular interrupt.

When MiniportHandleInterrupt is called, interrupts are disabled on the NIC, either by the MiniportISR or MiniportDisableInterrupt function. Before it returns control, MiniportHandleInterrupt can re-enable interrupts on the NIC. Otherwise, NDIS calls a driver-supplied MiniportEnableInterrupt function to do so when MiniportHandleInterrupt returns control.

By default, MiniportHandleInterrupt runs at IRQL DISPATCH_LEVEL.

See Also

MiniportDisableInterrupt, MiniportEnableInterrupt, MiniportInitialize, MiniportISR, MiniportSend, MiniportSendPackets, MiniportWanSend, NdisAdjustBufferLength, NdisAllocateBuffer, NdisAllocateMemory, NdisAllocatePacket, NdisMArcIndicateReceive, NdisMEthIndicateReceive, NdisMFddiIndicateReceive, NdisMIndicateReceivePacket, NdisMRegisterInterrupt, NdisMSynchronizeWithInterrupt, NdisMTrIndicateReceive, NdisMWanIndicateReceive, NDIS_PACKET, NDIS_PACKET_OOB_DATA