After reading Ilias’ post about Intellisense lacking for driver projects, I first thought about running upstairs and throwing a few more quarters at him. Then I thought about making a snarky response in his blog post. But in the end, I just decided to show him up;
That looks a lot like Intellisense to me no? And he just accused me of photoshopping these….sheesh 😉
Forgive the borders, I am just in a very goofy mood today.
Anyways, onward and upward, I promised a post regarding some cross stack communications. Well it turns out my loyal reader was suffering a bit of Patrick-itous. In this case, they were releasing a file handle after initial usage, so there wasn’t anything really wrong with the UMDF process code.
But for completion sake a 60 second overview of what was going on – Suppose you wish to communicate with a WDM / KMDF driver in another stack. Simply done in UMDF land; Open a handle to the target (make sure you use the OVERLAPPED flag), then call CreateFileHandleTarget. Don’t forget to store the target object returned, and don’t close the file handle…especially you Anil *g*. After that it’s simply a matter of determining how and what you want to send to that driver. Provided the driver recognizes the IOCTL you’re sending, you’re all set for communication with a driver outside the current stack.
Keep in mind that all requests submitted from the UMDF driver will fall under IRP_MJ_DEVICE_CONTROL.
Should somebody decide to email me and say they would like to see some sample code, I will churn some up for general consumption. Suffice it to say, what comes after this point isn’t much different than what I posted in the OnDeviceIoControl section here. Save you don’t really need to make the call to GetDefaultTarget. And if you aren’t touching the request at all on pass through you can forgo the infrastructure and just follow the SubmitAsyncRequestToLower code here.
*Currently playing – Peter Gabriel, Digging in the Dirt