Hey Malcolm, here are few comments:
First:
The only reason to support is because there are drivers that bypass the device stack. What it means for me: I can’t provide a solution that works for 100% of the devices out here. The only way to accomplish this is by patching the PDO dispatch table, since eventually the request has to get to the bus driver.
If you bugcheck the machine when you find that someone is violating the rule and not sending stuff down the device stack then OK. This will solve my problem in future releases, and I will be happy, since if a driver exits that violates this principal, there code will crash and also my driver will never be bypassed.
Second:
Anton put it very well:
After all, this “violation of a contract” is done in a way that is 100% legal, and their
API is doing everything possible to make this “violation of a contract” work
smoothly (unlike some other “violations” that they fight against with strategies
like PatchGuard)…
If we are not supposed to modify the dispatch table for other devices but our own, then you should not let us change it and give us complete access to it, otherwise you should support it. I should not have to go and ask if something is ok to do when i am using the publicly documented APIs but you should never do XYZ with them. It is kind of ridiculous. Thats why there are so many exceptions and to get a 100% working solutions it takes a lot, and the APIs open the door wide open for a lot of things.
[I should have posted this under NTDEV]