I’ve started a boot storage filter driver project, I’ve got the filter
loading, it didn’t crash the machine, so everybody is happy. Then I put a
*very* dumb mistake into the source, compiled, copied the binary, restarted,
boom!
OK, so I can use the handy-dandy file replacement map, since I’m running
Windows XP on both ends, and have this really cool 1394 connection between
my host and target and, besides WinDBG 6.0.17.0 help says I can, right?
So I make a mapfile on my host system,
D:\Projects\Drivers\DriverReplacement.Map. The contents of same are:
map
\Systemroot\system32\drivers\SeUlator.sys
D:\Projects\Drivers\SeUlator\objchk\i386\SeUlator.sys
I’ve also tried:
??\C:\Windows\system32\drivers\SeUlator.sys
C:\Windows\system32\drivers\SeUlator.sys
\Windows\system32\drivers\SeUlator.sys
The last one because that is the path to ntoskrnl.exe visible in the memory
above ebp when the system breaks on “First symbol load”. (I don’t assert
that it’s actually on the stack at that point, because I don’t know what’s
really in ebp at that point, though being on the stack is a reasonable
assumption.)
In the WinDBG command window, I type:
.kdfiles D:\Projects\Drivers\DriverReplacement.Map
and I get:
KD file assocations loaded from ‘D:\Projects\Drivers\DriverReplacement.Map’
I cleared and reloaded them each time I changed the target path.
Anyway, I can see no evidence of any attempt at file replacement happening.
Even using Ctl+Alt+D, I don’t ever see anything like this, copied from Sean
Bullington’s query last week:
KD: Accessing
‘D:\funk\proxy4\Host\kernel\build\chk_w2k\i386\phmdisp.dll’
(\SystemRoot\System32\phmdisp.dll)
File size 128K…
What I see, with Verbose mode ON, and !sym noisy “Nooisy mode on”, without
the Ctl+Alt+D spew, is:
ModLoad: f9767000 f9768b80 SeUlator.sys
Loading symbols for f9767000 SeUlator.sys -> SYMSRV:
http://msdl.microsoft.com/download/symbols/SeUlator.pdb/30F04D980D264ED5B9D6
B28048F903F71/SeUlator.pdb not found
SYMSRV:
http://msdl.microsoft.com/download/symbols/SeUlator.pdb/30F04D980D264ED5B9D6
B28048F903F71/SeUlator.pd_ not found
SYMSRV:
c:\windows\symbols\SeUlator.pdb\30F04D980D264ED5B9D6B28048F903F71\SeUlator.p
db - file not found
DBGHELP: d:\projects\drivers\SeUlator.pdb - file not found
DBGHELP: d:\projects\drivers\symbols\sys\SeUlator.pdb - file not found
DBGHELP: d:\projects\drivers\sys\SeUlator.pdb - file not found
DBGHELP: D:\Projects\Drivers\SeUlator\objchk\i386\SeUlator.pdb - mismatched
pdb
DBGHELP: Couldn’t load mismatched pdb for SeUlator.sys - Type “.hh
dbgerr003” for details
SeUlator.sys
*** ERROR: Module load completed but symbols could not be loaded for
SeUlator.sys
DBGHELP: SeUlator - no symbols loaded
So it appears that it’s not even trying to replace the old file with the new
one. I’ve tried this with both 1394 and null-modem cable connections, with
indistinguishable results. Have I missed something obvious?
Thanks,
Phil
Philip D. Barila
Seagate Technology, LLC
(720) 684-1842