I for the life of me cannot get !ndiskd.xxxxx to work correctly on Win7.
I have force-updated all of my symbols from the public symbol server.
I have uninstalled and re-installed the debugger package from the RTM WDK.
I have checked and re-checked everything I can think of and yet NDISKD
complains that it cannot get offset data from symbols that are most
definitely available.
For instance, using !ndiskd.nbl to dump a NET_BUFFER_LIST results in output
that is just bogus (it is all zeros when I can see in Windbg that the NBL is
most definitely *not* all zeros) and it spews the message
“Can’t get offset of NetBufferListInfo in ndis!NET_BUFFER_LIST!”
Now, a quick ‘dt’ of ndis!NET_BUFFER_LIST of course results in
“Symbol ndis!NET_BUFFER_LIST not found.”
but a ‘dt’ of ndis!_NET_BUFFER_LIST of course shows the structure type data
is present.
Is all of this broken because the public symbols do not have the silly
“typedef” alias records in them?
This is beyond frustrating. Could somebody in Redmond *PLEASE* try running
NDISKD in “plebian mortal mode” against the public symbol server once and a
while?
All of this because of an ‘underscore’ leading the struct name but not the
typedef name by which extension wants to look it up.
Why on earth would the CV debug data generated by
typedef struct _NET_BUFFER_LIST NET_BUFFER_LIST;
be considered the family jewels and have to be stripped from the PDB when
the actual type itself is included.
Gone too are the much more useful commands like
!ndiskd.protocols
!ndiskd.miniports
!ndiskd.filters
etc. rendering the previously very useful NDISKD just so much wasted space
on my disk.
I know, I should not complain. We just got NT_ASSERT() annotations…
Dave Cattley
Consulting Engineer
Systems Software Development