inf文件没有PID在同一VID下的多个产品
我试图创建一个“通用”Windows USB驱动程序(实际上只是一个.inf文件),可用于同一制造商下的几种产品。我想这样做的是只列出了厂商ID(VID)的不同制造商,这样我可以使用不同的模型相同的驱动程序从同一个生产厂家,这样的事情:inf文件没有PID在同一VID下的多个产品
[Version]
Signature=$WINDOWS NT$
Class=visaUsbDevice
ClassGUID={A3330EDF-239D-4206-833B-1D58952613D5}
Provider=%Vendor%
DriverVer=05/03/2017,1.0
CatalogFile=test.cat
;===========================================================================
; Default Installer
;===========================================================================
[DefaultInstall]
CopyINF=test.inf
[DestinationDirs]
[SourceDisksNames]
[SourceDisksFiles]
;===========================================================================
; Class Installer
;===========================================================================
[ClassInstall32]
AddReg=AddClass_AddReg
[AddClass_AddReg]
HKR,,,0,%DeviceClassString%
HKR,,Icon,,"-20"
;===========================================================================
[Manufacturer]
%Vendor%=USBList,NTamd64
[USBList]
%USB\VID_12D1.DeviceDesc%=WinUsb_Inst, USB\VID_12D1
%USB\VID_1004.DeviceDesc%=WinUsb_Inst, USB\VID_1004
%USB\VID_18D1.DeviceDesc%=WinUsb_Inst, USB\VID_18D1
%USB\VID_0BB4.DeviceDesc%=WinUsb_Inst, USB\VID_0BB4
%USB\VID_04E8.DeviceDesc%=WinUsb_Inst, USB\VID_04E8
%USB\VID_22B8.DeviceDesc%=WinUsb_Inst, USB\VID_22B8
%USB\VID_054C.DeviceDesc%=WinUsb_Inst, USB\VID_054C
%USB\VID_2A70.DeviceDesc%=WinUsb_Inst, USB\VID_2A70
[USBList.NTamd64]
%USB\VID_12D1.DeviceDesc%=WinUsb_Inst, USB\VID_12D1
%USB\VID_1004.DeviceDesc%=WinUsb_Inst, USB\VID_1004
%USB\VID_18D1.DeviceDesc%=WinUsb_Inst, USB\VID_18D1
%USB\VID_0BB4.DeviceDesc%=WinUsb_Inst, USB\VID_0BB4
%USB\VID_04E8.DeviceDesc%=WinUsb_Inst, USB\VID_04E8
%USB\VID_22B8.DeviceDesc%=WinUsb_Inst, USB\VID_22B8
%USB\VID_054C.DeviceDesc%=WinUsb_Inst, USB\VID_054C
%USB\VID_2A70.DeviceDesc%=WinUsb_Inst, USB\VID_2A70
[PreCopySection]
HKR,,NoSetupUI,,1
[WinUsb_Inst]
Include = winusb.inf
Needs = WINUSB.NT
[WinUsb_Inst.hw]
AddReg=WinUsb_Inst_HW_AddReg
[WinUsb_Inst.Services]
Addservice = WinUsb, 0x00000002, WinUsb_AddService
[WinUsb_AddService]
DisplayName = %WinUsb_Service_DisplayName%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %12%\WinUSB.sys
[WinUsb_Inst_HW_AddReg]
HKR,,DeviceInterfaceGUIDs, 0x10000,"{761ED34A-CCFA-416b-94BB-33486DB1F5D5}"
[Strings]
Vendor="TEST"
USB\VID_12D1.DeviceDesc="HUAWEI"
USB\VID_1004.DeviceDesc="LGE"
USB\VID_18D1.DeviceDesc="GOOGLE"
USB\VID_0BB4.DeviceDesc="HTC"
USB\VID_04E8.DeviceDesc="SAMSUNG"
USB\VID_22B8.DeviceDesc="MOTOROLA"
USB\VID_054C.DeviceDesc="SONY"
USB\VID_2A70.DeviceDesc="ONEPLUS"
DeviceClassString="NI-VISA USB Devices"
WinUsb_Service_DisplayName="WinUSB Driver"
SERVICE_BOOT_START = 0x0
SERVICE_SYSTEM_START = 0x1
SERVICE_AUTO_START = 0x2
SERVICE_DEMAND_START = 0x3
SERVICE_DISABLED = 0x4
SERVICE_KERNEL_DRIVER = 0x1
SERVICE_ERROR_IGNORE = 0x0
SERVICE_ERROR_NORMAL = 0x1
SERVICE_ERROR_SEVERE = 0x2
SERVICE_ERROR_CRITICAL = 0x3
但我做不到“不像是会得到它,而不必连接到上市的VID产品ID(PID),工作如:
%USB\VID_1004&PID_631C.DeviceDesc%=WinUsb_Inst, USB\VID_1004&PID_631C
当我尝试手动选择我为我的设备在设备管理器中创建的INF文件,它给我下面的错误:
The folder you specified doesn't contain a compatible software driver for your device. If the folder contains a driver, make sure it is designed to work with Windows for x64-based systems.
但是,如果我使用的.inf文件,我已经指定了我的一些设备PID,它的工作原理。问题是我无法列出所有不同的PID,因为驱动程序需要与列出的制造商的随机设备兼容。谁知道我能如何解决这个问题?
这是一个非常糟糕的主意,因为这些制造商可能会选择将不同类型的设备在未来,驱动程序可能很难让人们使用这些设备,如果它的优先级高于官方驱动。
而且,它不会工作,因为“PID”是字符串的一部分,Windows用来寻找驱动程序,你在实验中所看到的。
你可以尝试寻找在设备管理器的设备看他们是否有“兼容ID”你可以使用匹配,而不是VID/PID号码。
你可以做的另一件事是指导用户如何手动安装驱动程序特定连接的USB设备。要做到这一点,他们可以打开设备管理器,右键点击有问题的USB设备,选择“更新驱动程序软件...”,选择“浏览我的电脑驱动程序软件”,选择“让我从列表中选择设备驱动程序在我的电脑上“,然后从那里他们应该能够找到你提供的INF文件。
另外,也可以使用像查第格的实用程序来安装了WinUSB这些设备。