(changing subject line so we can veer off topic with impunity)
Ok this drags up a silly and unnecessarily complicated issue in !ndiskd. The short answer is to use “!miniport” (with no ‘s’) instead of !miniports.
In the !ndiskd from WDK 7.0, there were actually two extensions: !miniports and !gminiports. The former only showed STARTED miniports, while the latter showed ALL miniports.
In the !ndiskd from WDK 7.1, I tried to simplify things a little by renaming !gminiports to !miniport (no ‘s’). Meanwhile !miniports (with an ‘s’) was left mostly unchanged. That means that !miniport and !miniports can show different output [!], with the former being a superset of the latter. Miniports that are added, but not fully started, will only show up in !miniport. This is clearly a ridiculous situation, and a totally unnecessary point of confusion.
But – you’re in luck. This is the exact right moment in time to make feature requests and file bug reports on !ndiskd. (By the way, there have already been many improvements in the !ndiskd that ships with “Developer Preview” release, and we’ve got a few more killer features in the pipeline for the upcoming beta.)
So, thanks for reminding me of this; I will fix !miniports to always return the same set of miniports that !miniport returns, i.e., ALL miniports. If anybody has any other complaints about !ndiskd, please air them now.
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of David R. Cattley
Sent: Wednesday, October 26, 2011 5:23 PM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] NdisMIndicateStatus crashing driver
[veering off topic]
I am presently looking at a crash dump (not the OP’s situation at all) in which an IM driver upper edge miniport instance is very much ‘created’ and post it’s MiniportInitialize() call where NDIS is in the midst of brining the MP up (the relevant stack looks like this):
nt!KiSwapThread+0x266
nt!KiCommitThreadWait+0x1df
nt!KeWaitForSingleObject+0x393
ndis!ndisQuerySetMiniportEx+0x1f9
ndis!ndisMDoMiniportOp+0xad
ndis!ndisGetMiniportInfo+0xc76
ndis!ndisMInitializeAdapter+0xae3
ndis!ndisInitializeAdapter+0x10a
ndis!ndisPnPStartDevice+0x130
ndis!ndisIMInitializeDeviceInstance+0x5c
ndis!NdisIMInitializeDeviceInstanceEx+0x101
and the output of !ndiskd.minports has absolutely zilch on this MP instance.
In other words, it does not yet show in whatever NDIS has for a global list of miniport instances.
So I am not entirely sure I would buy into the surety that if a MP is not
shown in !ndiskd.miniports that it (the MP instance) does not exist.
NDISKD is a hugely useful tool no doubt but like any tool, it takes some knowledge to apply it usefully.
[/veering off topic]
Regards,
Dave Cattley
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer