Handling a NetDMA Interrupt

Note  The NetDMA interface is not supported in Windows 8 and later.

If the NET_DMA_INTERRUPT_ON_COMPLETION flag in the ControlFlags member of the NET_DMA_DESCRIPTOR structure is set, the dynamic memory access (DMA) engine generates an interrupt for the DMA channel after it processes the DMA descriptor. When this flag is cleared, the DMA engine does not generate an interrupt.

DMA provider drivers call the NetDmaIsr function in their interrupt service routine (ISR). For more information about ISRs, see Interrupt Service Routines.

The NetDMA provider driver passes the physical address of the last completed DMA descriptor at the DmaDescriptor parameter of NetDmaIsr. The NetDMA interface writes the CPU number at the address that is provided in the pCpuNumber parameter of NetDmaIsr before NetDmaIsr returns. The NetDMA provider must use the CPU number that pCpuNumber specifies as the target CPU for the interrupt DPC.

Note  When the ISR is called, the current DMA descriptor might already be different from the descriptor that triggered the interrupt.

A NetDMA provider driver should do as little work as possible in its ISR handler. Instead, the driver should defer I/O operations to the interrupt DPC handler. For more information about DPCs, see Handling a NetDMA Interrupt DPC.