原创 如何制作安装USB设备驱动的应用程序

2009-6-3 13:13 5072 8 9 分类: 通信
如何制作安装USB设备驱动的应用程序
本网站的任何原创贴都可以转载,但请注明出自WWW.USBSOLUTION.COM,谢谢!有需要原文的朋友或有什么建议请发送到usbsolution@hotmail.com与我联系。

受到大家的鼓励,再送上一篇,希望大家喜欢!


看到有好多的网友在论坛上询问这个问题,可是基本上我还没看到过详细的解答。这个问题确实在实际的产品发布中是很有价值的,过去我用InstallShield修改注册表的方法来安装。今天看了一下DDK中的INSTALL例程,发现可以用更简单的方法来做。下面我详细的说明一下Install例程的思路,同时我也作了一个Windows的小程序,供大家下载和参考。

基本上,Install的程序在main入口处需要两个参数,一个是你的inf的全路径,比如我的USBSOLUTION.INF在D:\UsbSolutionDrivers文件夹里,那么这个参数就是D:\UsbSolutionDrivers\USBSOLUTION.INF,同时你应该将你的驱动文件.SYS也放在D:\UsbSolutionDrivers文件夹里。另一个参数就是你的USB设备的HardwareID了,这个ID可就和你的Firmware中定义在设备描述符中的VID和PID有关系了。比如下面是我设备中的DEVICE_DESCRIPTOR:

DeviceDscr:
db DSCR_DEVICE_LEN
db DSCR_DEVICE
dw 0002H
db 00H
db 00H
db 00H
db 64
dw 1105H ;; VID
dw 1806h ;; PID
dw 0002H ;; Version ID
db 1
db 2
db 3
db 1

那么当我插入设备后,我的设备的HardwareID就是USB\Vid_0511&Pid_0618(注意大小写,我程序里没做转换哦)

有了如上两个参数,其实直接调用Install程序,就可以安装了(但是你必须先插上你的设备,并将WINDOWS弹出提示安装驱动的对话框取消了)。

对Install的解释:
其实Install只调用了两个函数,
一个是FindExistingDevice("USB\Vid_0511&Pid_0618");这个函数的作用就是找一下你的机器上是否插入了HardwareID为USB\Vid_0511&Pid_0618的设备。
另一个函数就是:UpdateDriverForPlugAndPlayDevices(0, "USB\Vid_0511&Pid_0618", "D:\UsbSolutionDrivers\USBSOLUTION.INF", INSTALLFLAG_FORCE, &RebootRequired);这个函数是在newdev.h中的api函数,需要加入newdev.lib,这个lib在C:\NTDDK\LIBCHK\I386中呢。他的作用就是完成驱动的安装,拷贝inf文件到%windir%\inf中,.sys考到%windir%\system32\drivers,以及修改了你不知道怎么修改的注册表!

我就得没必要对FindExistingDevice进行解释了吧,把它当成一个函数就行了。

OK,若有需要我将送上那个windows的安装程序。(我还没写呢:-)
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1484402 2009-10-29 18:57

我需要啊,最好给我一个打包的工程包,谢谢啦~ 3001385@qq.com
相关推荐阅读
sealove518_112732726 2012-12-14 13:16
同時兩個surfaceview camera 中的一些開發問題
問題1: 如何將camera surfaceview 顯示在最上層:用了this.setZOrderOnTop(true);這個方法 問題2: 如何用一個BUTTON來自由控制came...
sealove518_112732726 2012-12-14 11:22
Eclipse中导入android项目名前有红叉但项目内文件无错误问题解决方法
Eclipse中导入android项目名前有红叉但项目内文件无错误问题解决方法 Eclipse中,Android项目名称前有红叉,但项目内所有文件都无错误,通常发生在导入项目时。 先可以去...
sealove518_112732726 2012-09-05 10:29
android各种权限及说明
  android.permission.ACCESS_CHECKIN_PROPERTIES 允 许读写访问”properties”表在checkin数据库中,改值可以修改上传( Allow...
sealove518_112732726 2012-09-05 10:27
android各种权限及说明
android各种权限及说明 android.permission.ACCESS_CHECKIN_PROPERTIES 允 许读写访问”properties”表在checkin数据库中,改值...
sealove518_112732726 2012-09-04 08:54
android 获取当前程序路径
//  获取当前程序路径     getApplicationContext().getFilesDir().getAbsolutePath();   //  获取该...
sealove518_112732726 2012-01-11 09:40
mt.exe:general error c101008d 最终原因已查明
mt.exe:general error c101008d(最终原因已查明)_算法的天空_百度空间   2011-05-27 16:22:41|  分类: 坑爹软件问题 |  标签: |字号大...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条