75

帖子

0

TA的资源

一粒金砂(初级)

21
 
{
        INetCfgClass  *pncclass;
        HRESULT

回复

71

帖子

0

TA的资源

一粒金砂(初级)

22
 
{
        INetCfg    *pnc;
        LPWSTR     lpsz
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

23
 
最近在给客户做一个类似于三星的DNW的工具,用到的驱动文件也是和DNW同样的,也需要考虑和楼主同样的问题,还不清楚怎么实现呢
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

24
 
回hzy_76:
非常感谢你提供源代码,我正在研究呢。
我看到你的安装驱动的核心步骤就是调用setupCopyOEMInf函数。
关于这个函数我还不是很了解其内部机制是什么?MSDN上说,这个函数就是将INF文件以及其相关的文件COPY到系统文件夹中去。
那么这个函数和InstallHinfSection有什么区别呢?我想用DOS批处理脚本来安装驱动,论坛上许多人建议过这样的方法。InstallHinfSection也是将INF文件及其相关文件COPY到系统文件夹下面,并修改注册表。(这一点我在系统文件夹和注册表都有监视过)。结果还是没有安装成功(硬件插上后还是会弹出提示)。


另外,我现在同时还在试验用InstallShield来做个exe的安装包。不知道哪位老大有InstallShield 12 的电子版教材啊?  能分享一下吗?  谢谢咯!

 
 
 

回复

95

帖子

0

TA的资源

一粒金砂(初级)

25
 
是的,复制安装文件是必要的步骤。修改注册表部分,BindView里边是用INetCfgClassSetup来做的,看起来是针对网络的,估计你用不着了。不过你可以沿这个思路看是否有类似的解决方案。

我原来也想过用InstallShield来做,它的帮助里边也提到过可以制作驱动安装程序,但没有进展,后来就去研究BindView代码了。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

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


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

嘿嘿,不好意思,刚看到你的留言。
1.现在这个项目需要事先就把驱动安装到PC中去,也就是把安装驱动这件事放在安装软件(项目最终的发布软件)的过程中完成。那么应该怎么去安装驱动呢?
我看了你的那个脚本,你把设备插在上边然后安装一下,试试看能不能成功,不过安装过程中肯定要提示的。装好之后换个口插入肯定也会提示。(因为你没有经过ms认证。)
一般安装驱动的程序都是使用setupapi或者difx这两套库通过自己的程序实现的。
2. 并且由于软件最终会运行在XP、VISTA和Windows7下面,那么这三个系统下的自动安装的过程有多大的区别呢?
如果没有经过ms认证的驱动的话,在64位操作系统和32位操作系统下是有区别的。区别就是64位下不能使用。^_^.32位下,都一样,使用正规的操作装上之后,第一次插入设备时,还是会提示安装,只是这时选择自动搜索可以自动装上去。而且在安装过程中会有未经过认证的提示。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

27
 
如果使用InstallShield 12的话,这个工具里自带了安装驱动的接口,你只需要在里边点击几下,配置一下你驱动的路径就可以了。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

28
 
引用 23 楼 kisery008 的回复:
那么这个函数和InstallHinfSection有什么区别呢?我想用DOS批处理脚本来安装驱动,论坛上许多人建议过这样的方法。InstallHinfSection也是将INF文件及其相关文件COPY到系统文件夹下面,并修改注册表。(这一点我在系统文件夹和注册表都有监视过)。结果还是没有安装成功(硬件插上后还是会弹出提示)。

硬件插上后还是会弹出提示,这个情况是因为你的驱动程序没有经过签名,你可以找一台裸机,或者把你的机器上的驱动删干净试。和你的脚本程序是一样的,如果没有运行过程序或者脚本,在插入设备后提示安装驱动,这时你选择自动搜索,不能将驱动更新。如果运行过了,那就可以更新驱动了。
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

29
 
我现在也是这个问题,用InstallShield 做的包太大了, 换成Setup Factory在搞,可是研究了几天都还没搞定,用SetupCopyOEMInfA拷贝文件到INF文件夹,可是好像没有成功!不知道怎么回事?拷贝文件后还需要做些什么操作吗?
    在网上找了下,说要再去写注册表,可是不知道写啥?郁闷,
    关注中!!!
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

30
 
驱动的安装方式大至有二种:
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的名字和函数名。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

31
 
你的驱动目前打包完成没?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

32
 
我的方法:

DPInst.exe是WDK中的一个实用工具,它可以自动搜索指定目录的inf文件,并安装相应设备的驱动程序。

MSDN中有关于DPInst.exe的详细资料:
http://msdn.microsoft.com/en-us/library/ms790308.aspx
http://www.microsoft.com/china/whdc/driver/install/difxtools.mspx

下载地址:
http://www.microsoft.com/china/whdc/driver/install/DIFxtls.mspx
http://www.microsoft.com/downloads/details.aspx?FamilyID=2105564e-1a9a-4bf4-8d74-ec5b52da3d00&displaylang=en

DPInst.exe支持命令行,它支持的参数可以使用DPInst.exe /?查看。

示例:
1.自动搜索C:\VGA目录下的INF文件并安装驱动程序:
DPInst.exe /PATH "C:\VGA" /F /Q /LM /A

2.自动搜索C:\目录下的INF文件并安装驱动程序:
DPInst.exe /PATH C:\ /LM

http://qingfengju.com/article.asp?id=183
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表