I have a KMDF driver that sets the IO type to Direct and uses
WdfRequestRetrieve(Output/Input)Buffer call inside EvtIoRead/EvtIoWrite to
get a pointer to the request buffer. This works fine. However, if I switch
the device IO type to Buffered, then the WdfRequestRetrieveX functions return
SUCCESS status, yet set the buffer pointer to NULL. I don't see any
explanation for this in the documentation, as these functions are supposed to
work identically regardless for both Direct and Buffered IO type;
furthermore, I imagine that a buffer retrieval problem would be indicated by
the returned status.
Any ideas?