Debugging a failed device install or disable can be tough.  The error could be hidden in the depths of the system and it might take awhile to figure it out.  The error code on the device might be of some help, but it is not always clear.  For instance, you might get a code 10 for a failed start which means that the driver failed the pnp start irp...but that doesn't tell you why thedriver failed the request in the first place.  The error text in the add new/upgrade hardware wizard is pretty vague as well.

So what's a developer to do?  Where do you start?  Well, you should check the setup logs.  These logs exist on all versions of windows, starting with Windows 2000:

  • %windir%\setupapi.log
  • %windir%\setupact.log
  • %windir%\setuperr.log

In Windows Vista, there are 2 additional log files

  • %windir%\inf\setupapi.app.log
  • %windir%\inf\setupapi.dev.log

Finally, if you are installing a KMDF driver, the KMDF coinstaller writes out errors to setupact.log.  There are also KMDF logs (depending on the version you installed):

  • %windir%\wdf01000inst.log
  • %windir%\wdf01001inst.log
  • %windir%\wdf01005inst.log

If these logs do not have information in them, turn on verbose setup logging (I wrote about how to do this previously) and retry the installation.  If the log files still do not indicate what is wrong, you have to use the error codes to start digging around...