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 porting an old driver from WDM to KMDF, but have run into some issues.
The driver I'm porting enumerates a child device, to which a mouse driver will be installed. I don't want to rewrite the mouse driver as well, I'm trying to leave that as much as it is.
I am enumerating a child device using WdfFdoAddStaticChild, and the device is installed as expected. It can be seen in device manager, and when the mouse driver is installed, it starts as expected. But when the mouse driver tries to send an IRP_MJ_DEVICE_CONTROL using IoBuildDeviceIoControlRequest and then IoCallDriver, IoCallDriver fails with status STATUS_INVALID_DEVICE_REQUEST.
This works fine in the old WDM driver, so I don't think anything should be wrong in this code, pretty sure the issue is that the KMDF driver isn't set up right to receive the IRP.
In the KMDF driver i have installed EvtIoDeviceControl and EvtIoDefault handlers, none of which are ever called.
Is there anything else needed to be able to receive these IRP's from a child device?
I have been using the Toaster example for reference, but cannot find anything that seems related to this there.
|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|