The HKEY_LOCAL_MACHINE branch contains all device information relevant to the given machine, including information about devices found by detection modules during system setup, devices enumerated by Plug and Play enumerators, and devices manually identified by the user.
The following keys identify branches of HKEY_LOCAL_MACHINE that contain device information:
CONFIG\profile | Contains configuration information for a specific hardware profile. The profile subkey is a 4-digit, hexadecimal number identifying a specific hardware profile. Although the CONFIG branch is in HKEY_LOCAL_MACHINE, the predefined key HKEY_CURRENT_CONFIG can also be used to open the branch. |
CONFIG\profile\ENUM\ROOT\device-id\instance-number | Contains configuration information for a specific legacy device for a specific hardware profile. The profile subkey is a 4-digit, hexadecimal number identifying a specific hardware profile. The device-id and instance-number specify the device's ID and an instance number that uniquely identifies the device. This branch may contain an CSConfigFlags value, which is a bitmapped field defined as follows: |
Bit 0: Device is disabled | |
Bit 1: Device is removed | |
Bit 2: Do Not Start | |
ENUM | Contains information for all legacy, Plug and Play, and user-installed devices. Initially, this branch receives subkeys and values during system setup. Setup records information for each device found by hardware detection modules in the ROOT branch, Plug and Play enumerators record information about devices stored by that enumerator in another enumerator specific branch as described below. |
ENUM\enumerator | Contains a permanent record of all hardware that has been installed, whether currently present or not. The information includes the list of devices, their resource requirements, and driver bindings. The enumerator subkey uniquely identifies an enumerator; there is one subkey for each Plug and Play enumerator installed in the system. |
ENUM\ROOT | Contains information for all detected legacy devices. Because it is not possible to redetect all existing legacy devices each time the system starts, the root enumerator uses this information to load the drivers for this hardware. If ENUM\ROOT identifies a device, the system loads the corresponding driver. It is the responsibility of the driver to unload itself if the device is not available. |
ENUM\enumerator\device-id\instance | Contains device-specific information. The enumerator uniquely identifies the enumerator associated with the device. The device-id is the device identifier for the device, and instance is a string that uniquely identifies a particular instance of this device. This branch contains values such as DeviceDesc, Class, CompatibleIDs, and Driver. |
ENUM\ROOT\device-id\device-number | Contains information for a specific legacy device. The device-id is the device identifier for the device and and device-number is a 4-digit, hexadecimal number that uniquely identifies an instance of that device. This branch contains values such as DeviceDesc, Class, CompatibleIDs, BootConfig, and Driver. |
ENUM\ROOT\device-id\device-number\LogConfig | Contains logical configuration information for a legacy device. The device-id is the device identifier for the device and and device-number is a 4-digit, hexadecimal number that uniquely identifies an instance of that device. |
This branch contains one or more binary values that contain the configuration information. The name for each value is a decimal digit. | |
SOFTWARE\vendor-name\product-name\version | Contains information about the given version of an given application. The vendor-name must be a unique name identifying the manufacturer. The product-name also must uniquely identify the application. The version identifies the given version of the application or can be CurrentVersion to indicate the most recent current version if multiple versions are on the system. This branch contains zero or more application-specific subkeys and values. |
SYSTEM\CurrentControlSet\Control\IDCONFIGDB | Identifies the hardware profile database. This branch contains one or more keys that identify instances of hardware-profile information. This branch contains values such as CurrentConfig, FriendlyNamexxxx, and Map. |
SYSTEM\CurrentControlSet\Services\Class | Contains information about detected or enumerated hardware. This branch contains zero or more subkeys. Each corresponds to the registry-path given in the Driver value of a corresponding ENUM\enumerator\device-id\instance or ENUM\ROOT\device-id\instance branch. |
SYSTEM\CurrentControlSet\Services\Class\device-class | Contains information about a specific device class. The device-class is the unlocalized name for the class. This branch contains values such as Installer, Icon, and EnumPropPages. This branch also contains an unnamed value that specifies the localized name of the class to present to the user during device installation. |
SYSTEM\CurrentControlSet\Services\Class\device-class\instance | Contains information about a specific device within the given class. The device-class is the class name; the instance is a 4-digit, hexadecimal number. This branch contains values such as DriverDesc, DevLoader, and Enumerator. |
SYSTEM\CurrentControlSet\Services\VxD | Contains information about static virtual devices, that is, virtual devices that are loaded with the system rather than dynamically loaded. This branch is used to identify virtual devices, such CONFIGMG, that are not associated with a specific device. This branch supersedes the corresponding entries in the [386Enh] section of the SYSTEM.INI file. To avoid loading duplicate virtual devices, Windows 95 loads all virtual devices identified in this branch first, then loads virtual devices from SYSTEM.INI, giving preference to virtual devices loaded from the registry. This guarantees that new drivers specified in this branch take precedence over old drivers specified in SYSTEM.INI. |
SYSTEM\CurrentControlSet\Services\VxD\device-class | Contains information about drivers and other system components that do not necessarily have corresponding devices. The device-class is the class name of the virtual device. This branch contains values such as Start and StaticVxD. |