With its integration into the Win8 WDK, I’ve been running SDV quite a bit on my drivers. I can honestly say that it’s found one or two problems… when it doesn’t accvio. But that’s not why I’m posting here.
My KMDF driver was accused of being a violator of the DrvAckIoStop rule… which apparently means “Your driver could have a Request that was presented by a power managed Queue in progress when your device wants to leave D0, and you don’t have an EvtIoStop or anything to deal with this.” I’m obviously retarded, because it took me about an hour to figure this out. I thought maybe SDV was trying to teach me some deep, dark, subtlety of KMDF power managed Queues that was previously unknown to me.
But I just think SDV is saying “You have a Queue presented request that you keep in progress and that could thus delay a remove/shutdown/sleep, cuz I don’t see a EvtIoStop.”
And, no… as far as I can tell, this delay isn’t actually possible in my driver. If I’ve got a Request in progress, it’s sitting in a Queue with manual dispatching, where it’s cancelable. I’m good with keeping the Request in progress on that Queue during an ordinary sleep/wake transition, where it will be processed some time after the device wakes back up. So, you know, no EvtIoStop needed.
I’m not complaining about the error, the description, the hour it took me to figure out what the issue is, or even the false warning. I appreciate SDV making me think through the issue. Sort of.
Now… All I want to do is suppress the warning that SDV’s giving me.
The SDV docs tell me to use __analysis_assume to do this. But I have no clue what to tell Analysis to Assume. What I want to say is “Analysis, please assume that I’m all good with pending Requests around my transitions out of D0. So, you know, you can stop telling me I’m a Gxd Cursed DvrAckIoStop violator… because I’m not one.”
In short, how do I suppress the SDV warning DrvAckIoStop?
Thanks for whatever info,
Peter
OSR