I support a driver and pci hardware that goes into an embedded Windows 2K/XP
system. I have recently converted the driver into a fully WDM driver,
removing lots of obsolete Hal* calls.
Our PCI hardware has a problem. The eeprom that contains the information
that is downloaded into the PCI bridge chip on rare (not rare enough)
occasionally “scrambles”. We don’t yet completely understand why it happens.
That eeprom contains our vendor and product ID (among aother stuff), and my
driver loads against those ids. When it scrambles, it usually scrambles in
such a way that the bridge chip recognizes that the product and vendor id
info coming from the eeprom is invalid, and defaults to its own product and
vendor id. I can and do load my driver against those also. I can get away
with this becasue we are an embedded system, and no customer can add or
remove PCI devices that might potentially use those id’s.
If the eeprom scrambles such that the ids are considered valid by the bridge
chip, but they are not the ones I know about, my driver won’t load, and
worst case some other driver might load! I have never seen that happen, but
it is just a matter of time.
So, if I go back to using the Hal* calls, I can probably find the pci
device, and attempt to clean it up. I know the bus number and slots that the
card could be in, so I could find it. But, the Hal* calls are supposed to be
obsolete. Should I use them? When are they REALLY going to be obsolete?
Longhorn? I wish MS woudl give us a drop dead release past which the
obsolete calls are really obsolete! It is hard to tell my boss that I
shouldn’t use those calls to fix this problem, if they are going to exist
into Longhorn.
Niels Jensen