Fix Error Code 19: Windows Cannot Start This Hardware Device

This article explains the cause and how to fix Windows Device Manager Error Code 19: Windows cannot start this hardware device because its configuration information (in the registry) is incomplete or damaged.

This error is caused by broken association between device-related registry keys in the SYSTEM registry hive: software key, hardware key and service key. It can be fixed by removing first two keys from registry and triggering Windows Plug and Play device installation sequence.

As usual on prime-expert.com, this article is on-topic, right-to-the-point, exact and accurate. It's unlike articles on the other sites written by jack-of-all-trades, master-of-none, cargo-cult random clickers whose advice boils down to the three options: defragment disk C:, reinstall Windows and throw away the hardware. Unlike them, we present a precise technical description of the very specific registry condition that needs to be fixed manually.

1. Symptoms

Windows Device Manager displays yellow triangle with an exclamaton mark and the following warning:

Windows cannot start this hardware device because its configuration information (in the registry) is incomplete or damaged. To fix this problem you should uninstall and then reinstall the hardware device. (Code 19)

or:

Windows cannot start this hardware device because its configuration information (in the registry) is incomplete or damaged. To fix this problem you can first try running a Troubleshooting Wizard. If that does not work, you should uninstall and then reinstall the hardware device. (Code 19)

2. Definitions

Let's start with come definitions to put further discussion to the context.

Term Meaning
SYSTEM Registry Hive A registry hive mounted at HKEY_LOCAL_MACHINE\SYSTEM and stored in the file C:\Windows\System32\Config\SYSTEM. Essentially, the main registry hive for Windows OS. It is accessed by Windows Loader (which fetches from there a list of boot class drivers to load them early along with Windows Kernel), from Windows Kernel Mode (e.g. from device drivers) and from Windows User Mode (e.g. from applications).
Current Control Set Virtual registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet. When Windows is running, this registry key is mapped to HKEY_LOCAL_MACHINE\SYSTEM\ControlSetNNN where NNN is a decimal number, stored right there, in the registry value HKEY_LOCAL_MACHINE\SYSTEM\Select\Current of type REG_DWORD. Original idea of Windows NT OS was to allow easy switching between multiple hardware configurations, but later it was abandoned and nowadays NNN is usually equal to 001. If Windows is not running (e.g. when editing registry manually), then virtual registry key CurrentControlSet does not exist and NNN should be accounted manually.
Service There are two types of services: user mode service and kernel mode services. Latter divide into two categories: device drivers and Windows OS components (such as NTFS and TCP/IP). Service configuration is stored in the registry key <Current Control Set>\services\<Service Name>. Don't touch those keys, otherwise system may not boot.
Device ID Device identifier, as reported by the device driver to Windows. For example, if we have 4 Tb Western Digital HDD with product code WD40EFRX, then it will have the following Device ID:
IDE\DiskWDC_WD40EFRX-68WT0N0____________________82.00A82
Note that Device Id has bus type identifier (IDE\ in this example) prepended to it. This indicates that said device is connected to IDE bus, or at least Windows thinks so.
Device Instance ID This identifier uniquely represents the device in system. For example, if we have two 4 Gb Western Digital HDDs with product code WD40EFRX attached to the system, they may have Device Instance IDs like this:
IDE\DiskWDC_WD40EFRX-68WT0N0____________________82.00A82\4&27617201&0&0.1.0
IDE\DiskWDC_WD40EFRX-68WT0N0____________________82.00A82\4&27617201&0&0.2.0
As indicated above, <Device Instance ID> = <Device ID>\<Instance Specific ID>. Instance Specific ID is a random stuff to tell apart multiple instances of the same device in the system, like port number device is attached to. Sometimes Instance Specific ID contains device serial number. It is determined by device driver what would it look like.
Device Hardware Key Registry key corresponding to device instance. There device driver and Windows PnP Manager may store device settings, configuration data or whatever else they deem necessary, and whatever makes sense for a specific instance of the device. It's location in registry is <Current Control Set>\Enum\<Device Instance ID>.
Device Software Key Registry key corresponding to a device driver. Devices managed by the same driver sometimes have matching Device IDs, but not necessarily. It is perfectly OK to have devices with totally unrelated Devices IDs, but as long as they are managed by the same driver, there will be just one registry key storing configuration of that driver. Example Device Software Key: <Current Control Set>\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318}\0002. GUID in that key is a device class GUID from INF file, 16-bit number is just an incrementally growing number chosen by Windows PnP Manager to avoid conflicts.
INF File Text file with device setup information, provided by device vendor along with device driver. A lot of such files come preinstalled with Windows. In pre-Vista versions of Windows, INF files were used to install Windows itself. INF file instructs Windows about file and registry operations required to install device driver, and contains list of Device IDs this driver is associated with. Installed INF files are stored by Windows in the folder C:\Windows\Inf. Device ID to INF file associations are stored separately, in the undocumented binary format which heavily depends on the Windows version.
Plug and Play When device is plugged in, if Device Software Key and Device Hardware Key registry keys are missing (either keys were deleted by user, or device is discovered by Windows for the first time), then these registry keys will be created and populated automatically by Windows PnP Manager and Windows Setup API. INF files are considered primary source of truth for the purpose of creation and population of Device Hardware Keys and Device Software Keys. Entire technology of reparsing and executing INF files, creating registry keys and values, and loading drivers is called "Plug and Play". But Setup API is a user-mode component of Windows OS, so INF files are not parseable and can't be executed at boot time, before Windows is fully loaded.
Critical Device Database Unability of Windows to parse INF files and install drivers at boot time is a pity, so bypass mechanism exists to circumvent this problem for boot critical devices, such as hard disks. For Windows NT 4.0, Windows 2000, Windows XP/2003, Windows Vista and Windows 7 this bypass mechanism is called Critical Device Database. Under <Current Control Set>\Control\CriticalDeviceDatabase registry key these's a mapping from Device ID straight to Service Name, supplemented by UpperFilters/LowerFilters borrowed from Device Hardware Key. Device Software Key and Device Hardware Key are created at boot time, but populated later, when Windows boots to GUI. Whether device is boot critical or not, is determined by device class GUID from the INF file. For obvious reasons, it's not recommended to mess with this registry key.
Driver Database Starting with Windows 8, Critical Device Database was replaced by essentially a binary cache of preparsed INF files. Not all syntax features of INF files are supported by this binary cache, but unsupported features are declared obsolete by Microsoft and no longer qualify for Windows Logo and digital signature requirements for drivers.
This binary cache of INF files allows Windows Kernel PnP Manager to install drivers without assistance from Setup API, in kernel mode, at boot time. It is a core feature which enables Windows To Go for Windows 8, Windows 8.1 and Windows 10.

3. Questions and answers

Let's explore this topic further by asking and answering relevant questions.

Question Answer
How Device Hardware Key is associated with Device Software Key? There's a link from Device Hardware Key to Device Software Key. It's stored in the registry value Driver of type REG_SZ.
How Device Hardware Key is associated with Service Name? There's a link from Device Hardware Key to Service Name. It's stored in the registry value Service of type REG_SZ.
What's the source of Error Code 19? This error occurs in the Windows Kernel, in the context of PnP Manager, if Device Hardware Key contains invalid reference to Device Software Key or to the Service Name.
Why error number is so low? It doesn't look like valid Win32 error code or NTSTATUS. It's a bit number in small bitfield (32-bit unsigned integer) shared between Windows Kernel PnP Manager, Windows User-Mode PnP Manager and Windows Setup API.
Why Error Code 19 occurs? Usually it is an indication of abnormal interruption (e.g. unsheduled reboot or power loss) of Plug and Play device installation sequence. Or some crazy user who deleted Service Key in registry without deleting Device Hardware Keys and Device Software Keys.
How to get rid of Error Code 19? Delete Device Software Key(s) and Device Hardware Key(s) while registry is mounted in offline mode. Plug and Play technology will kick in during the next reboot, and these keys will be recreated from INF files or from binary cache of INF files.
How do I find Device Software Key(s)? Look for device GUID in the INF file, then find all registry keys under <Current Control Set>\Control\Class\<Device Class GUID> which have InfPath registry value pointing to known INF file.
How do I find Device Hardware Key(s)? Find all registry keys under <Current Control Set>\Enum which link to previously found Device Software Key(s) via Driver registry value.
Won't missing Device Software/Hardware Key(s) affect windows bootability? No, Critical Device Database bypasses them, and they are recreated later from scratch using INF files or using a binary cache of INF files in Windows 8+ Driver Database.
There are undeleteable registry subkeys called Properties under Device Hardware Keys. What can be done about them? Use Registry Editor from Emergency Boot Kit. It ignores access control lists in registry keys and lets you delete any registy keys. Also it has a very powerful and convenient registry search capabilities. Also it's a very good idea to avoid deleting kernel-mounted registry keys on the live system. User Guide for EmBootKit Registry Editor.
Are there any other recommendations? Save a copy of \Windows\System32\Config\SYSTEM hive and corresponding log files before deleting or changing anything. For example, use File Manager from Emergency Boot Kit for that purpose. User Guide for EmBootKit File Manager.
What versions of Windows this article and error code 19 applies to? All NT-based versions of Windows: Windows NT 4.0, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10. Also Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2 and Windows Server 2016. Also Windows 2011 Home Server, Windows FLP, Windows POSReady and Windows Embedded. (All versions of Windows, except DOS-based Windows 95, Windows 98 and Windows ME.)