Сбой установки драйвера WinUSB в XP (отлично работает на Win7)

#windows-installer #driver #setupapi #winusb

#windows-установщик #драйвер #setupapi #winusb

Вопрос:

У меня возникли трудности с установкой драйвера WinUSB в Windows XP (x86, с пакетом обновления 3). Я следовал рекомендациям Microsoft WinUSB по созданию подписанного пакета драйверов с использованием inf-файла, подписанного файла cat (созданного с использованием Inf2cat) и соответствующих установщиков WinUSB. В Windows7 все работает отлично, но в XP установка завершается неудачно.

Inf-файл выглядит следующим образом:

 [Version]
Signature = "$Windows NT$"
Class = "Digitool Processors"
ClassGuid={D851949D-3793-4FA6-93F5-E86CCDCFD6F9}
Provider = %ProviderName%
CatalogFile=DigitoolCatFile.cat
DriverVer=10/28/2010,1.0.0.0

; ================== Class section ==================

[ClassInstall32]
Addreg=MyDeviceClassReg

[MyDeviceClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-1

; ========== Manufacturer/Models sections ===========

[Manufacturer]
%ProviderName% = Digitool_WinUSB,NTx86,NTamd64,NTia64

[Digitool_WinUSB.NTx86]
%USBMyDevice.DeviceDesc% =USB_Install, USBVID_064Bamp;PID_1212

[Digitool_WinUSB.NTamd64]
%USBMyDevice.DeviceDesc% =USB_Install, USBVID_064Bamp;PID_1212

[Digitool_WinUSB.NTia64]
%USBMyDevice.DeviceDesc% =USB_Install, USBVID_064Bamp;PID_1212
; =================== Installation ===================

[USB_Install]
Include=winusb.inf
Needs=WINUSB.NT

;[2]
[USB_Install.Services]
Include=winusb.inf
Needs=WINUSB.NT.Services

;[3]
[USB_Install.Wdf]
KmdfService=WINUSB, WinUSB_Install

[WinUSB_Install]
KmdfLibraryVersion=1.9

;[4]
[USB_Install.HW]
AddReg=Dev_AddReg

[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{40F2F474-A52F-4DDD-815F-785DFA5A5550}"

;[5]
[USB_Install.CoInstallers]   
AddReg=CoInstallers_AddReg
CopyFiles=CoInstallers_CopyFiles

[CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01009.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"

[CoInstallers_CopyFiles]
WinUSBCoInstaller2.dll
WdfCoInstaller01009.dll

[DestinationDirs]
CoInstallers_CopyFiles=11

; ================= Source Media Section =====================
;[7]

[SourceDisksNames]
1 = %DISK_NAME%,,,i386
2 = %DISK_NAME%,,,amd64
3 = %DISK_NAME%,,,ia64

[SourceDisksFiles.x86]
WinUSBCoInstaller2.dll=1
WdfCoInstaller01009.dll=1

[SourceDisksFiles.NTamd64]
WinUSBCoInstaller2.dll=2
WdfCoInstaller01009.dll=2

[SourceDisksFiles.ia64]
WinUSBCoInstaller2.dll=3
WdfCoInstaller01009.dll=3
; =================== Strings ===================

[Strings]
ProviderName="Peavey Electronics"
USBMyDevice.DeviceDesc="Digitool USB"
WinUSB_SvcDesc="Digitool USB"
DISK_NAME="Install Disk"
ClassName="Digitool Processors"
  

Сбой входа в систему setupapi в XP выглядит следующим образом:

 [SetupAPI Log]
OS Version = 5.1.2600 Service Pack 3
Platform ID = 2 (NT)
Service Pack = 3.0
Suite = 0x0100
Product Type = 1
Architecture = x86
[2011/10/28 18:33:56 5900.645]
#-198 Command line processed: "C:WINDOWSsystem32mmc.exe" C:WINDOWSsystem32    devmgmt.msc /s 
#I060 Set selected driver.
#-019 Searching for hardware ID(s): usbvid_064bamp;pid_1212amp;rev_0100,us vid_064bamp;pid_1212
#-018 Searching for compatible ID(s): usbclass_ffamp;subclass_00amp;prot_00,us class_ffamp;subclass_00,usbclass_ff
#I022 Found "USBVID_064Bamp;PID_1212" in C:WINDOWSinfoem34.inf; Device: "Digitool USB"; Driver: "Digitool USB"; Provider: "Peavey Electronics"; Mfg: "Peavey Electronics"; Section name: "USB_Install".
#I087 Driver node not trusted, rank changed from 0x00000001 to 0x00008001.
#I023 Actual install section: [USB_Install]. Rank: 0x00008001. Effective driver date: 10/28/2010.
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#I063 Selected driver installs from section [USB_Install] in "c:windowsinfoem34.inf".
#I320 Class GUID of device remains: {D851949D-3793-4FA6-93F5-E86CCDCFD6F9}.
#I060 Set selected driver.
#I058 Selected best compatible driver.
#-124 Doing copy-only install of "USBVID_064Bamp;PID_12125amp;26DFC3A5amp;0amp;2".
#W334 Failed to verify catalog when scanning file queue. Error 1168: Element not found.
#E360 An unsigned or incorrectly signed file "c:windowsinfoem34.inf" for driver "Digitool USB" will be installed (Policy=Ignore). Error 1168: Element not found.
#W187 Install failed, attempting to restore original files.
#E360 An unsigned or incorrectly signed file "c:windowsinfoem34.inf" for driver "Digitool USB" will be installed (Policy=Ignore). Error 1168: Element not found.
#-024 Copying file "C:WINDOWSsystem32DRVSTOREdigitool_AB7D48D412FA027D36DB13E9FD73698685B0025Ai386WinUSBCoInstaller2.dll" to "C:WINDOWSsystem32WinUSBCoInstaller2.dll".
#E360 An unsigned or incorrectly signed file "C:WINDOWSsystem32DRVSTOREdigitool_AB7D48D412FA027D36DB13E9FD73698685B0025Ai386WinUSBCoInstaller2.dll" for driver "Digitool USB" will be installed (Policy=Ignore). Error 1168: Element not found.
#-336 Copying file "C:WINDOWSsystem32DRVSTOREdigitool_AB7D48D412FA027D36DB13E9FD73698685B0025Ai386WdfCoInstaller01009.dll" to "C:WINDOWSsystem32WdfCoInstaller01009.dll" via temporary file "C:WINDOWSsystem32SET15.tmp".
#E360 An unsigned or incorrectly signed file "C:WINDOWSsystem32DRVSTOREdigitool_AB7D48D412FA027D36DB13E9FD73698685B0025Ai386WdfCoInstaller01009.dll" for driver "Digitool USB" will be installed (Policy=Ignore). Error 1168: Element not found.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [USB_Install.Interfaces] from "c:windowsinfoem34.inf".
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of "USBVID_064Bamp;PID_12125amp;26DFC3A5amp;0amp;2".
#E275 Error while installing services. Error 0xe0000219: The installation failed because a function driver was not specified for this device instance.
#E122 Device install failed. Error 0xe0000219: The installation failed because a function driver was not specified for this device instance.
#E157 Default installer failed. Error 0xe0000219: The installation failed because a function driver was not specified for this device instance.
#W422 Coinstaller 1 (Post Processing) modified status. Error 87: The parameter is incorrect.
#I060 Set selected driver.
#I125 Installing NULL driver for "USBVID_064Bamp;PID_12125amp;26DFC3A5amp;0amp;2".
#I121 Device install of "USBVID_064Bamp;PID_12125amp;26DFC3A5amp;0amp;2" finished successfully.
  

Я рву на себе волосы, пытаясь выяснить, что происходит не так в XP. Ошибки

«Не удалось проверить каталог при сканировании очереди файлов» и «Неподписанный или неправильно подписанный файл»

для меня это не имеет смысла, поскольку пакет драйверов правильно подписан и правильно устанавливается на Win7 без предупреждений. Любая помощь будет очень приветствоваться

Спасибо, Том

Ответ №1:

Я считаю, что одна из проблем [SourceDisksFiles.NTamd64] должна быть [SourceDisksFiles.amd64] . Я не уверен, что это проблема, но это одна из проблем.

Я думаю, что реальная проблема заключается в том, что Windows XP не поддерживает эту строку: Needs=WINUSB.NT.Services

Вам нужно изменить его на это:

 ;[2]
[USB_Install.Services]
Include=winusb.inf
Needs=WinUSB,0x00000002,WinUSB_ServiceInstall

[WinUSB_ServiceInstall]
DisplayName = %DisplayName% ; set this in your string area
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %WinUSB.sys
  

Комментарии:

1. Вы почти наверняка имели в виду «AddService» вместо «Needs» в опубликованном вами коде.