DriverPackagePreinstall ошибка с dpinst.exe

При попытке установить драйвер с помощью установщика пакета драйверов Microsoft DPInst я получил ошибку 0xE0000247. Я пытался проверить код ошибки с помощью Visual Studio Lookup Tool, но инструмент не знает этот код ошибки. Также MSDN здесь не помогает.

Как я могу найти значение этой ошибки?

Ниже фрагмент моего файла DPINST.LOG:

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

1 ответ

Решение

Прямо из SetupAPI.h (нерелевантные строки опущены):

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

Итак, ваша ошибка ERROR_DRIVER_STORE_ADD_FAILED который является общим кодом ошибки, возвращаемым SetupCopyOEMInf который в свою очередь называется DriverPackagePreinstall внутренне.

Причина этой ошибки плохо документирована, но, похоже, не связана с каким-либо конкретным типом ошибки (поэтому я назвал ее "универсальной"). Само название предполагает, что драйвер не может быть добавлен в хранилище драйверов (или хранилище драйверов DIFx для версий ОС до Windows Vista), что может иметь различные причины (недостаточные права доступа, сбой проверки пакета драйвера,...),

Из личного опыта могу вам сказать, что в большинстве случаев при возникновении этой ошибки возникает проблема с сертификатом, который используется для подписи пакета драйвера в 64-битной Windows. (Который действительно должен быть одним из CERT_E_* коды ошибок, но хорошо...)

Другие вопросы по тегам