首页->【EZ-USB CY7C68013 CYUSB3014小组】

1761 0

如何制作安装USB设备驱动的应用程序
本网站的任何原创贴都可以转载,但请注明出自WWW.USBSOLU

TION.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的安装程序。(我还没写呢:-)

楼主可见