DMA Programming Techniques

Direct Memory Access (DMA) is one of the most basic hardware techniques for transferring memory-based data between the central processor (CPU) and a particular device. Computer systems use a DMA controller which is an intermediate device that handles the memory transfer, allowing the CPU to do other things.

Drivers can use the DMA controller to transfer memory-based data directly. The following topics discuss DMA issues related to I/O programming.

Drivers can use adapter objects to control DMA. For more information about adapter objects, see Adapter Objects and DMA.

When a driver is transferring data between system memory and its device, data can be cached in one or more processor caches and/or in the system DMA controller's cache. For more information about DMA and caches, see Flushing Cached Data during DMA Operations.

If you need to split up your DMA operations into smaller chunks, see Splitting DMA Transfer Requests.

Version 3 of the DMA operations interface is available starting with Windows 8. For more information about this interface, see Version 3 of the DMA Operations Interface.