当前位置: 代码迷 >> 驱动开发 >> 【高分请问】Windows下怎么自动安装驱动程序
  详细解决方案

【高分请问】Windows下怎么自动安装驱动程序

热度:165   发布时间:2016-04-28 11:20:58.0
【高分请教】Windows下如何自动安装驱动程序
Hi,
小弟目前做的项目需要在Windows下安装一个简单的USB驱动,驱动程序由第三方提供(没有经过MS认证),包含DLL、INF、SYS等等文件。
一般情况下,当即插即用设备连上PC后,如果PC中没有该设备的驱动,会弹出安装驱动的提示,用户根据提示来一步步安装就可以了。
现在这个项目需要事先就把驱动安装到PC中去,也就是把安装驱动这件事放在安装软件(项目最终的发布软件)的过程中完成。那么应该怎么去安装驱动呢?
并且由于软件最终会运行在XP、VISTA和Windows7下面,那么这三个系统下的自动安装的过程有多大的区别呢?


PS:请教过一个高手,写个精简DOS程序即可,但还是没有弄清楚。正在看《Windows驱动开发技术详解》,由于不是写驱动,只是安装驱动,这本书中也没有找到可行的办法。

------解决方案--------------------
这个感觉向是把你的驱动 要加载到操作系统中,做到即插即用的,就跟我们使用U盘是一样的

楼主可以写个啥程序,把驱动加载到PC上,只要插上你的设备 就可以识别

这只是我的想法 具体这软件咋写 我也不会
------解决方案--------------------
既然第三方已经提供了“包含DLL、INF、SYS等等文件。”

楼主是否可以百度或者google下,“如何生成exe可执行文件”。


我们当时做项目,就把这个DLL和一些系统文件,用专用的软件人为生成了一个exe,之后一点就自动运行。

------解决方案--------------------
应该是WDM吧,我是用来安装我自己写的NDIS驱动的,已经调试通过。如果需要的话,留言给我,我可以把代码发给你。
驱动开发我也是初学者,有问题一起探讨!
------解决方案--------------------
我现在也是这个问题,用InstallShield 做的包太大了, 换成Setup Factory在搞,可是研究了几天都还没搞定,用SetupCopyOEMInfA拷贝文件到INF文件夹,可是好像没有成功!不知道怎么回事?拷贝文件后还需要做些什么操作吗?
在网上找了下,说要再去写注册表,可是不知道写啥?郁闷,
关注中!!!
------解决方案--------------------
驱动的安装方式大至有二种: 
1,在插上设备的时候进行安装,即使用函数UpdateDriverForPlugAndPlayDevice()。 
2,在没有物理设备的时候安装,即通常所说的驱动预安装(SetupCopyOEMInf)。 

需要注意的是: 
1,SetupCopyOEMInf()只是生成一个oem*.inf文件和oem*.pnf文件到Windows\inf\文件夹中, 
即没有修改任何注册表,也没有复制文件。生成的pnf文件包含源文件路径信息,以便在真正 
 插上设备的时候能够找到相应的sys等文件。 
2,UpdateDriverForPlugAndPlayDevice()在没有插上设备的时候是会执行失败的。 

Windows插上设备到找到合适的驱动的大致步骤是: 
1,插上设备后Windows设备信息到硬件键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\下去寻找相应的项。 

2,如果在Enum键下没有相应的信息,则Windows到预安装目录中去寻找相应的oem*.inf和oem*.pnf文件(oem*.inf和oem*.pnf只要前面的文件名相同就可以,故如果对二个同时改成相同的名字不会有什么影响). 
如果进行了预安装,则可以在这里找到相应的inf和pnf文件。于是弹出发现新硬件对话框,点自动安装就可成功(这个对话框可以通过协助安装程序搞掉它)。安装时会弹出徽标论证的对话框(XP下可以通过改注册表的方式搞掉,Vista下暂没发现办法) 

3,注册CoInstall的方法即修改以下键值: 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CoDeviceInstallers],子键名为要注册CoInstall的GUID,值为dll的名字和函数名。 
  相关解决方案