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/
Hi everyone, noob question, could someone please elucidate the exact semantics and definition of the
I recently discovered by accident, that the reason my
EvtIoDeviceControl output buffer was not being copied back into userspace was due to a missing call to
WdfRequestSetInformation right before calling
However, after looking at MSDN I only find very vague explanations as to what this function does - According to MSDN, "The WdfRequestSetInformation method sets completion status information for a specified I/O request." Ok, but what information? And for what kinds of I/O requests?
The prototype is:
void WdfRequestSetInformation( WDFREQUEST Request, ULONG_PTR Information );
ULONG_PTR reads to me as "pointer to some Request Information data structure" (or does it mean "a ULONG such that it is guaranteed to be the same type as a pointer type? But why is this guarantee needed here?"), but here we're using it as a "number of bytes transferred" parameter.
Furthermore, if we read on, we find the Parameter definition:
Information [in] Driver-defined completion status information for the request.
Driver-defined??? So each driver defines their own semantic to this function? I certainly did not, and yet it seems to have done something very well-defined and critically important!
Sorry if this comes off as a rant, but I'm really frustrated that I can't seem to find a concrete definition of exactly what that second "Information" parameter means, and in what calling contexts.
It seems everyone "secretely" knows its a byte-count parameter, but reading the docs I find I'm going in circles...
|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||7 Dec 2020||LIVE ONLINE|
|Internals & Software Drivers||25 Jan 2021||LIVE ONLINE|
|Developing Minifilters||8 March 2021||LIVE ONLINE|