The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
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.
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!||Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||15 Jun 2020||LIVE ONLINE|
|Writing WDF Drivers||22 June 2020||LIVE ONLINE|
|Internals & Software Drivers||28 Sept 2020||Dulles, VA|