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/
Go find your dirties pair shoes, you may want to throw at me.
I have had some success with my other toy projects and learned quite a bit. A lot of the DMA related details were hidden, so I haven't had to deal with it.
So, continuing on, I want to do the data processing on the Windows system instead of this external device - Still using the pre-existing FPGA to DMA the data.
1. In my KMDF driver, I create a common buffer.
2. Using the logical address I get from WdfCommonBufferGetAlignedLogicalAddress, I create a list of logical addresses, using the same page-size as that of the external device.
-- I figured this was safe since the CommonBuffer allocation is contiguous in the logical addresses space.
-- Note: Physical Page addresses doesn't matter since my User SW will be using the virtual address while the FPGA DMA will be using the logical addresses.
3. I get the Kernel Virtual Address by calling WdfCommonBufferGetAlignedVirtualAddress.
My question (drum roll) How can I convert the Kernel virtual address to a User virtual address so that my User SW can gain access to the data?
Thank again everyone for your patience and continuing help.
|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!|
|Writing WDF Drivers||24 January 2022||Live, Online|
|Internals & Software Drivers||7 February 2022||Live, Online|
|Kernel Debugging||21 March 2022||Live, Online|
|Developing Minifilters||23 May 2022||Live, Online|