Previous Next

FreeAdapterChannel

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
    );

Parameters

DmaAdapter
Pointer to the DMA_ADAPTER structure returned by IoGetDmaAdapter that represents the bus-master adapter or DMA controller.

Return Value

None

Headers

Declared in wdm.h and ntddk.h. Include wdm.h or ntddk.h.

Comments

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.

See Also

AllocateAdapterChannel, FlushAdapterBuffers, FreeMapRegisters, IoGetDmaAdapter, MapTransfer, DMA_OPERATIONS