Драйвер Windows: установите устаревшее оборудование с помощью инструмента командной строки

Операционная система: Windows Server 2016 R2

У меня драйвер RAMDisk может быть успешно установлен с помощью "Add Legacy Hardware Wizard" (hdwwiz.exe). Из вывода devcon hwids *, устройство можно увидеть, как показано ниже.

ROOT\UNKNOWN\0000
    Name: RAMDrive [ QSoft ] Enterprise (x64)
    Hardware IDs:
        ramdriv

Тем не менее, мне нужно завершить установку через Ansible, следовательно hdwwiz.exe не может быть использован. Это должно быть сделано через командную строку без взаимодействия.

Я попробовал несколько подходов, и ни один из них не работает.


Подход I: DevCon.exe (консоль устройства Windows)

C:\Ramdisk64_inst>devcon.exe install RAMDriv.inf ramdriv

Device node created. Install is complete when drivers are installed...
Updating drivers for ramdriv from C:\Ramdisk64_inst\RAMDriv.inf.
devcon.exe failed.

C:\Ramdisk64_inst>devcon.exe install RAMDriv.inf ROOT\UNKNOWN\0000

Device node created. Install is complete when drivers are installed...
Updating drivers for ROOT\UNKNOWN\0000 from C:\Ramdisk64_inst\RAMDriv.inf.
devcon.exe failed.

Вот журнал из C:\Windows\INF\setupapi.dev.log

>>>  [Device Install (UpdateDriverForPlugAndPlayDevices) - ramdriv]
>>>  Section start 2018/12/20 07:10:35.670
      cmd: C:\Ramdisk64_inst\devcon.exe  install C:\Ramdisk64_inst\RAMDriv.inf ramdriv
     ndv: INF path: C:\Ramdisk64_inst\RAMDriv.inf
     ndv: Install flags: 0x00000001
!    ndv: Unable to find any matching devices.
<<<  Section end 2018/12/20 07:10:35.717
<<<  [Exit status: FAILURE(0xe000020b)]


>>>  [Device Install (UpdateDriverForPlugAndPlayDevices) - ROOT\UNKNOWN\0000]
>>>  Section start 2018/12/20 07:11:50.687
      cmd: devcon.exe  install RAMDriv.inf ROOT\UNKNOWN\0000
     ndv: INF path: C:\Ramdisk64_inst\RAMDriv.inf
     ndv: Install flags: 0x00000001
!    ndv: Unable to find any matching devices.
<<<  Section end 2018/12/20 07:11:50.734
<<<  [Exit status: FAILURE(0xe000020b)]

Подход 2: DPInst.exe (установщик пакета драйверов)

C:\Ramdisk64_inst>dpinst.exe /PATH C:\Ramdisk64_inst /Q /C /LM

INFO:   Option set: dumping log info to console.
INFO:   Current working directory: 'C:\Ramdisk64_inst'
INFO:   Running on path 'C:\Ramdisk64_inst'
INFO:   No valid 'dpinst.xml' file provided.
INFO:   Install option set: Running in quiet mode. Suppressing Wizard and OS popups.
INFO:   Install option set: legacy mode on.
INFO:   Found driver package: 'C:\Ramdisk64_inst\RAMDriv.inf'.
INFO:   Preinstalling 'c:\ramdisk64_inst\ramdriv.inf' ...
INFO:   ENTER:  DriverPackagePreinstallW
INFO:   Driver package is already preinstalled 'c:\ramdisk64_inst\ramdriv.inf'.
SUCCESS:c:\ramdisk64_inst\ramdriv.inf is preinstalled.
INFO:   RETURN: DriverPackagePreinstallW  (0xB7)
INFO:   ENTER:  DriverPackageGetPathW
INFO:   RETURN: DriverPackageGetPathW  (0x0)
INFO:   ENTER:  DriverPackageInstallW
WARNING:DRIVER_PACKAGE_LEGACY_MODE flag set but not supported on Plug and Play driver on VISTA. Flag will be ignored.
INFO:   Installing INF file 'c:\ramdisk64_inst\ramdriv.inf' (Plug and Play).
INFO:   Looking for Model Section [DiskDevice.NTamd64]...
INFO:   No matching devices found in INF "C:\Windows\System32\DriverStore\FileRepository\ramdriv.inf_amd64_fcc99ac0622d865b\ramdriv.inf" on the Machine.
INFO:   No drivers installed. No devices found that match driver(s) contained in 'C:\Windows\System32\DriverStore\FileRepository\ramdriv.inf_amd64_fcc99ac0622d865b\ramdriv.inf'.
INFO:   RETURN: DriverPackageInstallW  (0xE000020B)
INFO:   No matching device was found for 'c:\ramdisk64_inst\ramdriv.inf'. Driver will be installed when plugged in.
INFO:   Returning with code 0x100

Подход 3: rundll32 вызывает SetupAPI

C:\Ramdisk64_inst>rundll32.exe setupapi.dll,InstallHinfSection DiskInstall 128 C:\Ramdisk64_inst\RAMDriv.inf

Он заканчивается без ошибок, но драйвер не установлен.


Подход 4: PnPUtil

C:\Ramdisk64_inst>pnputil.exe /add-driver C:\Ramdisk64_inst\RAMDriv.inf /install /subdirs /restart

Microsoft PnP Utility

Adding driver package:  RAMDriv.inf
Driver package added successfully.
Published Name:         oem7.inf
Driver package installed on matching devices.

Total driver packages:  1
Added driver packages:  1

Это удалось, но на самом деле драйвер не установлен.


Ни один из них не работает. DpInst.exe говорит No matching devices found in INF, DevCon.exe говорит Unable to find any matching devices, Кажется, причина та же.

Однако драйвер может быть установлен с hdwwiz.exe вручную, кто-нибудь знает, в чем секрет? hdwwiz.exe?

0 ответов

Устаревшие драйверы не могут быть установлены с помощью pnputil и должны использовать LaunchINFSectionEx-Call

Я протестировал следующее, и он работает с несколькими драйверами от Windows 2000 до Windows 10, 2012R2, 2016, 2019.

rundll32.exe advpack.dll,LaunchINFSectionEx ykmd.inf,Yubico64_Install.NT,,4,N

Обратите внимание, чтобы использовать правильный раздел

Правильный раздел inf-файла должен использоваться, когда нет раздела [DefaultInstall]. Этого не хватает в большинстве ответов. Найдите его в inf-файле драйверов и используйте правильный раздел (в моем примере "Yubico64_Install.NT"). Использование неправильного раздела не приведет к ошибке. В моем примере я использую тихий режим, без пользовательского интерфейса (4) и никогда не перезагружаюсь (N) для автоматической установки драйвера через GPO. Все параметры подробно описаны здесь:

https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa768006(v%3Dvs.85)

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