The FreeAdapterChannel routine releases the system DMA controller when a driver has completed all DMA operations necessary to satisfy the current IRP.
VOID
FreeAdapterChannel(
IN PDMA_ADAPTER DmaAdapter
);
None
Declared in wdm.h and ntddk.h. Include wdm.h or ntddk.h.
FreeAdapterChannel is not a system routine that can be called directly by name. This routine is callable only by pointer from the address returned in a DMA_OPERATIONS structure. Drivers obtain the address of this routine by calling IoGetDmaAdapter.
After a driver has transferred all the data and called FlushAdapterBuffers, it calls FreeAdapterChannel to release the system DMA controller that was previously allocated with a call to AllocateAdapterChannel.
FreeAdapterChannel frees any map registers that were allocated by an earlier call to AllocateAdapterChannel. A driver calls this routine only if its AdapterControl routine returns KeepObject.
Callers of FreeAdapterChannel must be running at IRQL = DISPATCH_LEVEL.
AllocateAdapterChannel, FlushAdapterBuffers, FreeMapRegisters, IoGetDmaAdapter, MapTransfer, DMA_OPERATIONS