Technical Document #77

Technical Document #77
How do I perform Direct Block transfers from one PCI card to another?

Locate and register both cards (using WD_PciScanCards(), WD_PciGetCardInfo() and WD_CardRegister()).
At least one of the cards must be PCI DMA Master Capable.
Program it with the physical address of the Slave card. Obtaining this address is possible by using pciCard.Card.Item[i].I.Mem.pPhysicalAddr (or dwPhysicalAddr before v11.8.0), set by WD_PciGetCardInfo() for the slave card.

(Refer to the WinDriver User's Manual for more information regarding DMA handling and the related APIs. In newer versions of WinDriver, WD_DMALock() is described in the WinDriver PCI Low Level API Reference.)

A sample of programming the DMA can be found, for example, in the WinDriver PLX library and the samples that use it.