以前用DriverStudio 3.2 写了个32位的驱动,用以驱动5509A的USB口,并与VC6写的应用程序交互读回数据。时过境迁,64位系统普及的今天,微软非不让人消停。不得已的情况下发现了WINUSB这个东西,于是开始尝试让老树发新芽了。
一,搭建系统
WINDOWS 10 +Visual Studio 2017 Community+Windows 10 SDK (10.0.17763.0)+Windows 10 版本 1809 的 WDK
没什么好说的。
二,新建一个inf 工程
三,修改PID,VID
8181和0101是在5509A里写死 的,根据设备不同更改。不记得的话设备管理器里可以查到。
填入设备的DeviceInterfaceGUIDs,以后将会用createfile以此ID获得设备的操作句柄
HKR,,DeviceInterfaceGUIDs,0x10000,"{36C75AEF-45FC-49db-8637-XXXXXXXX}"
花括号里的内容需要自己生成。工具为 guidgen.exe
修改String段里的内容。不改也没关系。
四,生成解决方案
遇到以上错误说明你失眠了,起床太早遇到跨时区问题。修改时间戳位本地时间或者把系统时间调到8点以后
理论上
五,安装设备
理论上x64目录生成的inf 和cat 文件已经能在win10,64位上给你的5509A把未知设备打上驱动了。
但是微软怎么能这么好心,去百度一下WIN10永久关闭数字签名,然后才可以 用你的驱动。
六,如果是Windows7 64 位需要修改INF
增加类注册的字段
; ========== Class definition ===========
[ClassInstall32]
AddReg = ClassInstall_AddReg
[ClassInstall_AddReg]
HKR,,,,%ClassName%
HKR,,NoInstallClass,,1
HKR,,IconPath,%REG_MULTI_SZ%,"%systemroot%\system32\setupapi.dll,-20"
HKR,,LowerLogoVersion,,5.2
添加完以后重新生成解决方案,新的inf,cat 文件可以在win7 64位上使用了。
六,建立应用程序来试着操作5509A
插入一下,CMD界面时需要开启符号服务器调试
七,修改 GUID_DEVINTERFACE_XXXXX
在这里要区别用户GUID 和类GUID,需用到在前面定义的 36C75AEF-45FC-49db-8637-XXXXXXXX了。
HKR,,DeviceInterfaceGUIDs,0x10000,"{36C75AEF-45FC-49db-8637-XXXXXXXX}"
将他改成示例中的格式,最后几位要拆成两两对齐。
八,生成解决方案,然后调试的时候选择本地windows 调试器,接上你的设备,运行一下后台就获取了VID,PID
大功告成了。