你需要为Windows编写一个.inf文件,将你的设备VID和PID与系统usbser.sys绑定。我的文件如下所示(请根据需要替换YourCompany,输入你的VID和PID(以十六进制表示),并将DriverVer行更改为所需的日期和版本):
[Version]
DriverVer=12/03/2008,1.0.0000.0000
Signature="$Windows NT$"
Class=Ports
ClassGUID={4d36e978-e325-11ce-bfc1-08002be10318}
Provider=%YourCompany%
[DestinationDirs]
DefaultDestDir=10,system32\drivers
DriverCopyFiles=12
[ControlFlags]
ExcludeFromSelect = *
[Manufacturer]
%YourCOmpany%=YourCompanySerialPort
[YourCompanySerialPort]
%YourCompanyUSBSerialPort%=YOURCOMPANYUSB,USB\VID_1234&PID_ABCD
[YOURCOMPANYUSB]
Include=mdmcpq.inf
CopyFiles=FakeModemCopyFileSection
[YOURCOMPANYUSB.HW]
AddReg=YOURCOMPANYUSBAddReg.HW
[YOURCOMPANYUSBAddReg.HW]
HKR,,DevLoader,0,*ntkern
HKR,,NTMPDriver,,"usbser.sys"
[YOURCOMPANYUSB.Services]
AddService=usbser, 0x00000002, FuncDrv_Service_Inst
[FuncDrv_Service_Inst]
DisplayName=%USBFilterString%
ServiceType= 1
StartType = 3
ErrorControl = 0
ServiceBinary = %12%\usbser.sys
[Strings]
YourCompany="YourCompany"
YourCompanySerialPort="Your Company USB Serial Port"
USBFilterString = "USB Serial Service"
请注意,此方法只适用于32位操作系统。尽管文件头没有标明,但它也适用于Vista!
请注意,某些版本的usbser.sys存在严重问题,例如传输精确为64字节倍数的数据包时会导致蓝屏。如果您使用XP SP2或更早版本,请安装热补丁KB943198。XP SP3和Vista则没有问题。
对于Mac电脑,您只需要正确报告设备类别,驱动程序扫描即可拾取正确的驱动程序。(Windows忽略了设备类别,这就是为什么需要提供.inf文件的原因)。
编辑:抱歉,我应该更清楚地表达。如果无法绘制全部负载,则此方法不会无法枚举 - 我不确定这是否可能发生。