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 working on updating an old WDM bus-driver for some serially connected hardware, where on a newer system this hardware is connected via UART instead of a legacy COM port.
I've come so far that I can install the driver when Windows is running, and everything is working just fine.
Although, if I reboot Windows, the driver doesn't work any longer. The driver gets loaded and sends some stuff on the UART, but very soon a surprise removal happens and the driver is not loaded again after that.
It is not a general issue during boot though. If I uninstall the driver, then the UART device is also uninstalled and requires a reboot to get back. If I then reinstall my driver (before rebooting), the driver doesn't start immediately (obviously). But when rebooting then, the driver loads just fine.
The driver enumerates two child devices, but none of them have a driver installed during these tests (and installing their drivers makes no difference). And after the surprise removal, none of the child nor parent drivers are present in device manager.
I don't really know where to look anymore. Does anyone have any ideas what might cause surprise removal of a UART device during boot?
As an experiment, I've also made a small dummy driver using WDF, that uses the same UART. That driver loads just fine, every time. So the UART in itself seems fine. But I really don't want to rewrite the entire driver.
|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!|
|Internals & Software Drivers||15 November 2021||Live, Online|
|Writing WDF Drivers||TBD||Live, Online|
|Developing Minifilters||7 February 2022||Live, Online|
|Kernel Debugging||21 March 2022||Live, Online|