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/
My understanding is that a single hardware ID can only have one base driver installed, and if it is a PnP driver, can have filter drivers installed above or below it to manipulate things as needed. I am currently using this setup for my toy GPU, where the base WDDM driver is a KMDOD and I have a filter that runs above it which lets me interface with the hardware in ways that are not supported by the KMDOD paradigm.
Audio drivers use a different class than display drivers, and I'm not sure how that interacts with the "one driver (stack) per hardware ID" rule. Can I have drivers of different classes loaded for the same hardware? If not, am I going to have issues related to the fact that I'm trying to implement an audio driver using a filter driver on top of a display driver?
I plan on actually interacting with the hardware solely from the WDDM KMDOD driver, through interfaces exposed by it, exactly as my existing filter driver does to allow for usermode DMA and other things that KMDODs don't support.
I found an open-source WDDM driver (https://www.nxp.com/design/software/embedded-software/i-mx-software/windows-10-iot-enterprise-for-i-mx-applications-processors:IMXWIN10IOT) that uses a similar interface-based communication mechanism between the audio driver and the display driver, but in that example there are different ACPI hardware IDs for the two drivers. In my case, I have a single PCI ID.
Any insight would be appreciated!
|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!
|13-17 May 2024
|1-5 Apr 2024
|Internals & Software Drivers
|11-15 Mar 2024
|Writing WDF Drivers
|20-24 May 2024