Hack 96 Uncover Hidden Hardware with the Device Manager


Hardware ghosts and other hidden devices can cause system conflicts, and the Device Manager won't report on them. This hack forces the Device Manager to uncover all your hidden hardware so you can resolve any conflicts.

One of the strangest hardware problems you'll encounter in XP are hidden and ghosted hardware devices that are invisible to you but that may cause system conflicts. You won't be able to see them in the Device Manager [Hack #95]. When you use that troubleshooting tool, you won't be able to uncover any problems they may be causing.

There are several types of these hidden and residential gateways:optimizingghosted devices that are hidden by the Device Manager. Non-plug-and-play printers, drivers, and similar devices don't show up. Most newer devices are plug-and-play, so you'll most likely encounter this problem only if you have old hardware attached to your PC. (Plug-and-play devices are automatically recognized and installed in XP.) In this instance, the device is physically present on your PC, but the Device Manager doesn't show you that it's there.

Then there are the so-called nonpresent or ghosted devices?devices that you've removed from your system without doing an uninstall, or whose uninstallation did not work properly. These devices aren't physically present in your system, but XP treats them as if they were and devotes system resources to them. For example, if you physically remove an old network card without doing an uninstall, it may cause IP and other kinds of conflicts, because XP treats it as if it were still in your system.

The Device Manager also may not give you details about USB devices that you only temporarily use and that you frequently attach and remove?for example, MP3 players that you attach to your PC only when you want to add or delete MP3 files from them. Even when these devices aren't present in your system, XP devotes resources to them. If you replace one USB device with another of the same model, it's best to go through the uninstall process rather than just swap them.

And then there are devices that you may have moved from one slot to another. XP may believe that they are actually present in two slots, so it devotes resources for both slots to them.

Displaying these hidden devices can help with troubleshooting. For example, a hidden device could possibly conflict with a nonhidden device. And there may be instances in which you will want to uninstall hidden devices?for example, when you've moved a non-plug-and-play network card from one slot to another and want to uninstall it from one slot.

But to do this kind of troubleshooting you'll need to force the Device Manager to display information about the devices; otherwise, you won't know how to solve the problem.

Forcing the Device Manager to display non-plug-and-play printers, drivers, and similar devices is a simple matter. Run the Device Manager by typing devmgmt.msc at a command prompt and pressing Enter, and then choosing View Display Hidden Devices, and they will appear.

Displaying ghosted or nonpresent devices takes a little more work. You'll set a system-wide environment variable that forces the Device Manager to display them. First, right-click on My Computer and choose Properties Advanced Environment Variables. The Environment Variable dialog box opens. This dialog box let you set system variables for the entire system or for individual users. Environment variables control a variety of XP features, such as the location of your Windows directory and TEMP directories and the filename and location of the command processor that will launch when you run the command prompt.

There are two sections in the Environment Variables dialog box: "User variables" and "System variables." To apply the variable to a single user, use the "User variables" dialog box; to apply the variable to all users, use the "System variables" dialog box. In this case, you'll want to create the variable system-wide, so click New in the "System variables" section. The New System Variable dialog box appears. For "Variable name," type devmgr_show_nonpresent_devices. Once you've created the name, you need to give it a value. To turn the setting on, type 1 in the "Variable value" box. You can see the box filled out properly in Figure 12-3. Click OK and then OK again.

Figure 12-3. Setting the Device Manager to always show ghosted devices

So, now you've set the system variable properly, but the Device Manager won't display ghosted devices yet. You first have to tell it to display them. Run the Device Manager by typing devmgmt.msc at a command prompt or the Run box and pressing Enter. Then, choose View Display Hidden Devices and the ghosted devices will appear, as shown in Figure 12-4. You should see quite a few devices now, including a lengthy list of non-plug-and-play drivers. Typically, devices that are not currently present on your PC will be shown as gray, rather than the black that connotes present devices. You may also see some devices listed more than once, as shown in Figure 12-4.

Figure 12-4. Displaying ghosted devices in the Device Manager

Now, use the Device Manager to troubleshoot any of those ghosted devices, as detailed in [Hack #95]. If you find any ghosted devices that you will no longer use on your PC, uninstall them from the Device Manager by right-clicking on the device and choosing Uninstall.

12.3.1 Hacking the Hack

If you want to use the Device Manger only on occasion to show ghosted devices and don't want to add another environment variable to your system, you can add the variable on an instance-by-instance basis?for example, for a single time that you run the Device Manager. At the command prompt, type set devmgr_show_nonpresent_devices=1 and press Enter. You won't get a prompt in response; the command prompt will stay blank. At the same instance of the command prompt, type start devmgmt.msc and press Enter. The Device Manager will launch in a separate window. Now, enable the Device Manager to show ghosted devices in the same way you did previously in this hack.

Keep in mind that you have to run the Device Manager from the same instance of the command prompt in which you typed devmgr_show_nonpresent_devices=1. If you run the Device Manager outside the command prompt, it won't display ghosted devices.