There is a written rule, but I don’t think that it’s correct anymore, at least. I thought that the deal was that 8.3 was a boot
only issue, but I believe that I’ve seen boot drivers that are longer than this and load fine.
I think (total guess here) that this is ‘bu’ and possibly other command specific issue, for two possible reasons. The first is the
prescence of ‘-’ in your driver name. Option parsing in WinDbg commands/extension commands has been known to vary between commands,
so maybe this one thinks that it is an option? Just a thought. The other is perhaps because ‘bu’ stores information as more or
less a text reference (unlike ‘bp,’ which stores it as an address), so that it may recalculate the address when the driver loads or
reloads, whereas with ‘bp,’ it’s fixed, and maybe someone assumed that they need 8.3 to store a module name.
'When you use a bp command, the breakpoint location is always converted to an address. If the code that a bp breakpoint is set on
moves, the breakpoint remains at the address and might point to different code or to an invalid location.
In contrast, a bu breakpoint is always associated with the symbolic value (typically a symbol plus an optional offset) of the
breakpoint location that is specified in the command. This association is maintained even if the code with the symbolic value is
moved or if the module that contains the location is loaded or unloaded.’
So, I guess the things that I wonder is what happens with ‘bp MOD!DriverEntry,’ where ‘MOD’ is greater than 8 characters in length,
and what about a module name that is longer than 8, but contains only [A-Za-z_0-9]?
Cheers,
mm
raj_r wrote:
> nice question i notice all broken Driverentry have just eight or less
> than eight chars in thier name
>
> is drivers supoosed to have just eight chars in thier name
just a followup it looks like none of ms drivers or any drivers that
ended up in c:\windows\system32\drivers have names that are greater
than 8 chars
did a
C:\WINDOWS\system32\drivers>dir /s /a /b *.sys > c:\driv.txt
and sorted it for char len
2
ks 2
mf 2
p3 2
sr 2
3
aec 3
afd 3
dxg 3
fdc 3
mcd 3
mup 3
pci 3
srv 3
tdi 3
vga 3
max 8 char
videoprt 8
wacompen 8
wadv07nt 8
wadv08nt 8
wadv09nt 8
wadv11nt 8
watv06nt 8
watv10nt 8
WSTCODEC 8
so prolly somewhere there is an unwritten rule