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/
So I have a standard app which uses DeviceIoControl with an input buffer and output buffer to my driver. This is a METHOD_BUFFFERED ioctl.
I understand that the input buffer and output buffer in the ioctl handler point to the same address. This is fine.
In error cases, I fill up the output buffer with extended status code and call WdfRequestCompleteWithInformation(Request, , # of bytes). I am careful to not touch the input buffer after the output buffer is written.
In these cases, application is getting 0 as the return value of DeviceIoControl which is correct.
But the dwBytesReturned field of DeviceIoControl is always zero and no bytes are actually copied to the output buffer.
How do I return data in the output buffer in case of error in the ioctl handler?.
I am able to pass data back to the application in the output buffer if I complete the request with STATUS_SUCCESS.
|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