HP Printers crashing Win98 (and getting VxD versions under Linux)
Kitty says to me today she's having printing problems. About 1/2 the time, the machine just hangs when she tries to print. I reply with the standard help desk response of "reinstall the print drivers". Oh boy.
Shortly thereafter, not only did the new printer software fail to find the printer, the damned thing would BSOD (Win98) if it was booted WITHOUT the USB printer attached!
Then USB just stopped working for a while. That was cute.
Long story short - after many (many) reboots, including logged boots and many BSODs (and just plain lockups on boot) I finally noticed that even with it all supposedly uninstalled, it still BSODd without the printer attached. I'm talking manual Registry wipes uninstall. It wouldn't lock if I deleted the USB hub from Windows. Until I rebooted again and then BSOD. I found it was still loading a VxD file.
Yes folks, think WAY back. 16 bit. Windows 3.1 - "System.ini"!!! But it wasn't there either. In there is a line that says to load "*.VxD".
So I erased (OK, moved) all the HP*.VxD files in C:\Windows\System\VMM32\ (WTF?) and wow - everything was A-OK when there was no printer attached! I figured that would make a good baseline - if it don't boot without the printer, it will never boot with.
I connected the printer, pointed it to the directory where I had downloaded the drivers, and it installed without a hitch. Even installed the accessory utils automagically.
So I went back to that VMM32 directory. The HP files were back. Copied them all to my fileserver, and ran diff on them. No differences. Except... there was a file "hpziop98.vxd" what wasn't reinstalled. Lo and behold, the old directory had both "hpziop98.vxd" and "hpziop00.vxd". Kinda suspicious, huh?
Here's a Linux command for you to file away:
strings *.vxd | grep -A 20 ProductVersion''' hpziop00.vxd: ProductVersion 1, 18, 6, 0 ProductName Hewlett-Packard 1284 Driver. OriginalFilename hpziop00.vxd LegalCopyright Copyright 1998. All rights reserved. InternalName hpziop00 FileVersion 1, 18, 6, 0 FileDescription 1284 Driver. CompanyName Hewlett-Packard Company Comments Built on 12/30/99 2:00pm hpziop98.vxd: ProductVersion 1, 16, 7, 0 ProductName Hewlett-Packard 1284 Driver. OriginalFilename hpziop00.vxd LegalCopyright Copyright 1998. All rights reserved. InternalName hpziop00 FileVersion 1, 16, 7, 0 FileDescription 1284 Driver. CompanyName Hewlett-Packard Company Comments Built on 10/12/99 2:30pm
Yes folks, some time between Oct and Dec 1999, HP renamed their 1284 driver file, and didn't tell the uninstaller (which I ran at least 3 times!) to remove the older version if it saw it! AND, IEEE 1284 is PARALLEL PORT!!! Lastly, you'll note the "OriginalFilename" entry for the __98 file?!?
Fixed. Total time: almost 2.5 HOURS.