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'm new to Windows driver development, so be gentle.
I would like to build and test a Windows PCIe (so KMDF) driver in an automated CI pipeline.
I would like to avoid (graphical) Visual Studio, as my team and I are primarily Linux developers and command-line tools seem to work best in CI automation. I've started with CMake + FindWDK + EWDK. Currently I can build a driver + inf on my local machine with that scheme, but it's untested, so not sure if what I have is usable.
I checked in on the "Containerized WDK Build Environment" discussion and it seems like folks have varying degrees of success, but lean towards VMs instead of (Docker) containers for isolated builds. That would play well with a testing idea I have (below), too.
Ideally I'd like to test as much as I can in the CI pipeline, so tests may range from custom-written "can I write to register X on device Y and observe change Z" tests, to Microsoft-written tests like the DevFund tests in the HLK.
On Linux, I can setup a VM with PCIe passthrough and run driver tests inside the VM. This allows me to run different OSs/kernels but keep the physical test hardware identical. However, all MSDN articles I've found so far explicitly/implicitly say that a discrete non-virtualized system should be used for testing.
|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|