winapidriverinfdpinst

DriverPackagePreinstall error with dpinst.exe


When trying to install a driver using Microsoft Driver Package Installer DPInst I got error 0xE0000247. I tried to check the error code with Visual Studio Lookup Tool but the tool doesn't know this error code. Also MSDN doesn't help here.

How can I lookup the meaning of this error ?

Below a fragment of my DPINST.LOG file:

INFO:   Install option set: Running in quiet mode. Suppressing Wizard and OS popups.
INFO:   Install option set: legacy mode on.
INFO:   Install option set: Suppressing EULA.
INFO:   Install option set: Force install if driver is not better.
INFO:   Install option set: Suppress Add or Remove Programs entries.
INFO:   Found driver package: 'C:\Program Files (x86)\MyApp\my_driver.inf'.
INFO:   Preinstalling 'C:\Program Files (x86)\MyApp\my_driver.inf' ...
INFO:   ENTER:  DriverPackagePreinstallW
INFO:   RETURN: DriverPackagePreinstallW  (0xE0000247)
INFO:   Returning with code 0x80010000

Solution

  • Straight from SetupAPI.h (irrelevant lines omitted):

    #define APPLICATION_ERROR_MASK       0x20000000
    #define ERROR_SEVERITY_ERROR         0xC0000000
    #define ERROR_DRIVER_STORE_ADD_FAILED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x247)
    

    So your error is ERROR_DRIVER_STORE_ADD_FAILED which is a generic error code returned by SetupCopyOEMInf which in turn is called by DriverPackagePreinstall internally.

    The cause of this error is poorly documented but doesn't seem to be related to any specific type of error (hence I called it "generic"). The name itself suggests that the driver could not be added to the driver store (or the DIFx driver store for OS versions prior to Windows Vista) which could have various reasons (insufficient access rights, validation of the driver package failed, ...).

    From personal experience I can tell you that most of the time when this error occurs there is a problem with the certificate used to sign the driver package on 64-bit Windows. (Which should really be one of the CERT_E_* error codes, but well...)