Wednesday, June 22, 2011

The case of the missing driver - part 2

Continuing the case of the missing driver, let's talk about identification.  In order to find the driver for the hardware in question you need to know exactly what the hardware is.  And no, I'm not talking about opening up the case and having a look - although under extreme circumstances that might become necessary.

When we talk about identification what we're looking for is the "hardware identification string."  This is not a user-friendly string like "Intel GMA 4500MHD video card."  It's a long string of hex numbers and letters that uniquely identify the hardware.  All hardware identification strings are in the form of <Bus>\<Id>.  The "bus" is one of 15 hardware busses in a modern computer.  Those 15 busses are; ACPI, ACPI_HAL, Display, FDC, HID, HTREE, IDE, ISAPNP, PCI, PCIIDE, Root, Storage, SW, USB, and USBSTOR.  The "id" part of the string varies greatly depending on the type of bus.  It can be short like "PNP0000" or long like "VEN_8086&DEV_27D0&SUBSYS_00000000&REV_01."

Now that we know what the hardware identification string looks like, we need to find it for our unknown hardware.  I'll give you three ways.

First is a program I found years ago called PCITree.  This program enumerates PCI hardware and provides the identification information for each device.  I actually don't recommend this method unless you want to play with PCITree.  This program only works on PCI devices which is only one of the 15 busses.  Plus there are other ways of getting the data without having to install a program.

The second method is the good old registry.  Fire up regedit and head over to HKLM\System\CurrentControlSet\Enum.  You'll see 15 keys for the corresponding busses, under each key are keys for the hardware on that bus.  The unknown hardware will be in this area.  To make it easier you can search.  So if Windows calls the unknown device an "SM Bus Controller" than you can search for that term.

The final method is also the easiest and probably the one you'll want to use.  You can get the info in question in Device Manager.  Select the unknown device and right-click and choose properties.  Click on the details tab then change the combo box to "Device Instance Id."  The information shown in the list control is the hardware identification string.  Unfortunately you can't copy that text into the clipboard, that's the only problem with the Device Manager method.

Now that we've identified our hardware, tomorrow I'll talk about how we find and install the driver for this hardware.

No comments:

Post a Comment