9

At first boot post-installation or when installing third-party device drivers in Windows 95/98/ME, it's common to see the following dialog:

A screenshot of Windows 98 showing an active window without any buttons, entitled “Building driver information database”, with text inside “Please wait while Windows builds a driver information database.” and a progress bar at 70%. Behind it there is a notification window informing of new hardware being detected.

So what is this "driver information database" which doesn't appear in the NT lineage? Where is this database, and what is stored in it? What's its significance in the Windows 9x driver model?

0

1 Answer 1

6

This is purely inferred from what that thing was used for, and how deleting a .ini file from the C:\WINDOWS\Inf directory did not instantly lead to devices not being identified (but installation failing, if my memory doesn't betray me). If I remember correctly, the driver database, C:\WINDOWS\INF\DRV???.BIN files, hail from Windows 3.1.

These database files are nothing special, it's just that Windows parses all the .ini files describing the drivers it can load to build one database it can look into, so that it doesn't have to open a lot of files just to find the one containing the driver description for the PCI ID of a new device in it.

Rememember that random drive access was (and is, relatively) slow, compared to reading a disk-contiguous file (which is why "defragging" is a thing), and there was limited cache, and that on many machines that ran Windows 3.1, where seek times of 200 ms were not standard, but also not uncommon, opening a lot of different files was not a great idea (it was painfully slow, partially because precaching of folder entry tables was bad, IIRC, so to open the next file, there was a fair chance the hard drive head had to seek back to the FAT, read an entry, then seek to nearly the same position it was before…).

5
  • 1
    Also the database can be indexed by PCI ID (or equivalent), whereas the inf files are organized by driver, so you're pretty much forced to iterate over them all to find out which driver to load for a given device.
    – hobbs
    Commented Apr 4 at 20:12
  • @hobbs 29 years later, though, I still wonder what on earth Microsoft's developers have been doing with these .infs when they parsed them, it was really unreasonably slow even on relatively capable storage. Commented Apr 5 at 14:21
  • Winfows 3.1 did not have those databases. In fact, it did not have INF files at all. Commented Apr 6 at 8:50
  • @user3840170 I don't have a Win3.1 machine at hand, but: are you sure? I specifically remember fiddling with C:\WINDOWS\SYSTEM\*.inf to make installations work on other computers, things like OEM.INF, SETUP.INF? Commented Apr 6 at 9:48
  • I looked into this further and it turns out Windows 3.x did have some kind of INF files – although they seem to have a pretty different structure from ones found in Windows 95. It certainly had no BIN files for automatically matching drivers to enumerated devices: all drivers had to be installed manually. I guess I stand corrected? (Maybe in part.) Commented Apr 9 at 15:31

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .