I am working on a DMA implementation with a device that does not support scatter-gather. The device does support 64 bit addressing. When I create my dma enabler, If I use WdfDmaProfilePacket or WdfDmaProfilePacket64, WdfCommonBufferCreate only returns buffers with a logical address in the first 4 GB of memory (my test machine has 16 GB of installed RAM). My device functions normally in this case. If I use WdfDmaProfileScatterGather64, I now get buffers with logical addresses > 16 GB. When my device tries to write to these bufferes I get random bsod.
What is the correct way to allocate contiguous memory buffers accessible by the device without being limited to memory in the 32bit address range? I have found lots of similar questions but nothing seems to explain WdfCommonBufferCreate returning buffers with addresses outside the physical installed RAM size.
It looks like you're new here. If you want to get involved, click one of these buttons!
|Upcoming OSR Seminars|
|Developing Minifilters||29 July 2019||OSR Seminar Space|
|Writing WDF Drivers||23 Sept 2019||OSR Seminar Space|
|Kernel Debugging||21 Oct 2019||OSR Seminar Space|
|Internals & Software Drivers||18 Nov 2019||Dulles, VA|