что в устройстве будет - совсем конкретно не знаю... не я делал. кто то тут из местных говорил что сам бусмастера на плисах писал...
а с софтверной точки зрения:
1. устройству передается физический адрес памяти куда оно будет писать (и размер). еще раз подчеркиваю ФИЗИЧЕСКИЙ.
2. софтверно он получается через использование
...
devExt->DMAAdapter =
IoGetDmaAdapter( devExt->PhysicalDeviceObject,
&devDescr,
&devExt->NumberOfMapRegisters);
devExt->h0_BuffData =
devExt->DMAAdapter->DmaOperations->
AllocateCommonBuffer( devExt->DMAAdapter,
ROUND_TO_PAGES(SYSTEM_MEMORY_FOR_BOARD),
&devExt->lpPhisAddrBuffData,
FALSE);
devExt->lpPhisAddrBuffData - и передается)
подробности в ддк)
PS DMA - имеется в виду доступ железки до памяти ПК?
(просто есть еще мапируемая память. не уверен что она тоже DMA зовется но все таки уточню))