#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» в опубликованном вами коде.