mengjin
驱动牛犊
驱动牛犊
  • 注册日期2004-03-24
  • 最后登录2010-06-12
  • 粉丝0
  • 关注0
  • 积分335分
  • 威望83点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2007-12-24 12:24
菜鸟我今天虽然还是没做出什么东西,不过已经有了一点新收获。
DIFx是一个开发包,用于开发驱动安装程序的。它应该也是封装了UpdateDriverForPlugAndPlayDevices,SetupDIXXXX等函数。它有现成的64bit的版本。
Installshield可以选择支持64bit的DIFx,那么我就可以直接使用DIFX提供的函数进行安装了。这是方法1。
而假如我还是要用自己公司原本那个dll进行安装,首先我要先把DLL编译成64bit的。而IS生成的Setup.exe是64bit的,它无法加载我这个64bit的dll,我必须在IS中LauchApp,启动一个64bit的exe,这个exe再加载我的dll。这是方法2。
方法2比较繁琐,但是好处是这个DLL已经有现成的,我只需编译成64bit的,并且可能要修改一些不适应64bit OS的地方。
方法1是比较简单的,缺点是DIFx这个开发包没有用过,可能会遇到一些困难。
anyway,知道了做法就可以试试了,想起来这个周末我的茫然,没头苍蝇一般的瞎折腾,这样已经很好了。想起我之前试图想编译一个64bit的setup.exe的思路,真是惭愧啊。



 
mengjin
驱动牛犊
驱动牛犊
  • 注册日期2004-03-24
  • 最后登录2010-06-12
  • 粉丝0
  • 关注0
  • 积分335分
  • 威望83点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2007-12-24 12:36
奇怪啊,我写了一大段怎么发不出?

今天虽然菜鸟米有做出什么来,不过已经有了不少长进,至少有点想法了。
前文所说,菜鸟的那个dll,调用UpdateDriverForPlugAndPlayDevices失败。因为调用进程是32bit的。这样是不行滴~
菜鸟傻乎乎的想把用Installshield编译出的setup.exe,编译成64bit的,再把那个安装dll也编译成64bit的。
但是dll好编译,setup怎么办呢?我又不熟悉IS。
于是周末一直在瞎折腾这个事情。

今天早上跟一个朋友聊起来,在他的帮助下,终于建立了一点概念(惭愧啊,他就是上午帮我看了下Installshield的文档而已)。

首先DIFx这是一个开发包,可以用于开发驱动安装程序,它估计也是通过封装UpdateDriverForPlugAndPlayDevices,SetupDiXXX等函数实现的。在IS里,可以直接配置为要支持DIFx 64bit。这样就可以在脚本里直接调用这个开发包提供的函数来完成安装了。

而我们公司原来那个dll,要想用,还是要把它编译成64bit的,然后在IS里lauchapp一个64bit的EXE,这个EXE再加载那个dll,通过调用dll里的安装函数完成安装。

这两种方法前者方便,但是缺点是DIFx这个工具我没用过。后者繁琐笨拙,好处是DLL是现成的,可能需要修改有些不适合64bit操作系统的地方。

anyway,有了正确的方法,再难实现的东西也能做得出来,而没有方法,那就是没头苍蝇啊!
周末我浪费了两天时间,一直在瞎折腾IS,真是惭愧啊~~~

另外,菜鸟还是米有找到ERROR_IN_WOW64在哪里定义,不过万能的google告诉我,它就是0xE0000235。。。
mengjin
驱动牛犊
驱动牛犊
  • 注册日期2004-03-24
  • 最后登录2010-06-12
  • 粉丝0
  • 关注0
  • 积分335分
  • 威望83点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2007-12-24 12:37
以为没有发出去上面那段,结果是因为分页了,5555555555,又写了那么多,天哪
fazwh
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2020-11-18
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望303点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
  • 社区居民
23楼#
发布于:2008-01-14 23:29
很久没有看到这么好的贴了,都不愿意上驱网来了。看来还是时不时来一下好。
mengjin
驱动牛犊
驱动牛犊
  • 注册日期2004-03-24
  • 最后登录2010-06-12
  • 粉丝0
  • 关注0
  • 积分335分
  • 威望83点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2008-01-16 09:04
菜鸟很久没更新了,细细。
总而言之,菜鸟的自动安装程序做好了。这其中遇到了不少问题,不过都不是原则性的。
总的方法就是在Installshield里头,lauch一个进程,这个进程是64bit的,在这个进程里头,通过调用UpdateDriverFor...以及SetupDi等一系列函数完成安装。
Installshield很奇怪,它要求这个进程必须是有窗口的,窗口可以隐藏,但不能没有,否则IS不会等待这个进程结束再返回,而是立即返回。
目前整个安装还算顺畅。唯一我无法解释的就是,有时候安装不会成功,UpdateDriverFor...这个函数返回FALSE,错误原因是找不到INF文件,但INF文件明明存在。此时只要手工修改一下INF文件,随便敲个空格什么的,则安装就一定会成功。
于是我在调用UpdateDriverFor...之前,改变INF文件的最后修改时间这一属性,改成当前系统时间,但是这样做没用。
最后,我干脆每次调用UpdateDriverFor...之前,打开inf文件,写个空格进去,再关闭,这样一来则安装每次都不会有问题。
我知道自己这样蛮无耻的,但是,呃,我确实没找到什么相关资料,不知道为什么会这样,也想不到好的解决办法来的。。。。
ks12345
驱动小牛
驱动小牛
  • 注册日期2006-09-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望223点
  • 贡献值0点
  • 好评度189点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2008-01-21 10:36
good boy
不错的文章~~
Thinking
mengjin
驱动牛犊
驱动牛犊
  • 注册日期2004-03-24
  • 最后登录2010-06-12
  • 粉丝0
  • 关注0
  • 积分335分
  • 威望83点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2008-01-21 20:25

I am not a boy!!!
boly81
驱动小牛
驱动小牛
  • 注册日期2004-06-25
  • 最后登录2012-06-08
  • 粉丝0
  • 关注0
  • 积分490分
  • 威望73点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2008-01-23 11:34
数字签名和证书是怎么回事,怎么解决的阿
能不能给俺们这些菜菜鸟讲一讲?
先谢了
mengjin
驱动牛犊
驱动牛犊
  • 注册日期2004-03-24
  • 最后登录2010-06-12
  • 粉丝0
  • 关注0
  • 积分335分
  • 威望83点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2008-01-23 21:24
数字签名和证书的东西蛮简单的,
就是说,你要花钱买个证书,包括私钥和公钥,然后用SignTool这个工具,利用买到的证书,给sys加一个数字签名,签名之后,64bit的vista才好用。否则必须每次启动系统的时候修改选项,关掉“禁用未经签名的驱动”。
要买的证书是verisign公司的,不过假如嫌直接跟老外联系太麻烦,也可以找代理,我找的是wosign这个代理公司。证书买到,他们的技术支持会教你怎么做签名的。我只给sys做了签名,没有做cat文件签名,因为我不知道cat文件干嘛用的@_@买证书费用大概是一年3900左右。
大概就是这些啦。
boly81
驱动小牛
驱动小牛
  • 注册日期2004-06-25
  • 最后登录2012-06-08
  • 粉丝0
  • 关注0
  • 积分490分
  • 威望73点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2008-01-24 14:38
谢谢!
诲人不倦的精神很让人感动
哈哈 [希望你再接再厉,让大家多分享些你的宝贵经验
     
jesse3453
驱动小牛
驱动小牛
  • 注册日期2006-03-15
  • 最后登录2010-04-13
  • 粉丝0
  • 关注0
  • 积分1001分
  • 威望111点
  • 贡献值0点
  • 好评度100点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2008-01-25 10:37
呵呵,受教了,非常感激,我也遇到了客户提出的要把软件升级到VST的需求,可那一堆驱动啊,想着都头疼呢。

好贴啊,代表中国人民感谢你
冰枫化古
mengjin
驱动牛犊
驱动牛犊
  • 注册日期2004-03-24
  • 最后登录2010-06-12
  • 粉丝0
  • 关注0
  • 积分335分
  • 威望83点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
31楼#
发布于:2008-01-29 09:20
楼上的同学太客气了,我就是只菜鸟,写出来也不怕丢人,细细。
现在客户有了新要求,要求所有的dll,配置程序都是64bit的
我现在又开始了不屈不饶的移植了。
这些都是用户模式代码,我就用了vs2005编译。基本没啥大问题。
bdthrsky
驱动牛犊
驱动牛犊
  • 注册日期2005-08-09
  • 最后登录2008-11-25
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望9点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2008-01-29 10:20
感谢:)
cczlp
驱动小牛
驱动小牛
  • 注册日期2002-11-04
  • 最后登录2014-03-25
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望154点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
33楼#
发布于:2008-01-30 09:17
我去年开发了64bit驱动, 如果早看到这个帖子就好了,可以给你一点经验.
我是WinXP32bit+2003DDK开发的Vista64bit驱动, DLL是32位的, InstallShield做
的Setup也是32位的,实际我在Win98-Vista都是一个安装程序.
证书我没买,做了一个自己的, 直接设置成调试模式(不用开机按F8,不过原理一样).
mengjin
驱动牛犊
驱动牛犊
  • 注册日期2004-03-24
  • 最后登录2010-06-12
  • 粉丝0
  • 关注0
  • 积分335分
  • 威望83点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
34楼#
发布于:2008-01-30 09:20
啊啊啊啊啊!
楼上的同学抓住!还在么?????
mengjin
驱动牛犊
驱动牛犊
  • 注册日期2004-03-24
  • 最后登录2010-06-12
  • 粉丝0
  • 关注0
  • 积分335分
  • 威望83点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
35楼#
发布于:2008-01-30 09:22
你的安装程序没改么?
假如安装进程不是64bit的
UpDateDriverXXX这个函数不会成功啊。

设置成调试模式,是不是就是把OS搞成Test Mode?

能否加我msn啊?
mengjin0321@hotmail.com
cczlp
驱动小牛
驱动小牛
  • 注册日期2002-11-04
  • 最后登录2014-03-25
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望154点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
36楼#
发布于:2008-01-30 10:52
我根本没有用UpDateDriverXXX, 呵呵
Bear_Law
驱动牛犊
驱动牛犊
  • 注册日期2007-01-18
  • 最后登录2008-06-17
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
37楼#
发布于:2008-04-25 11:06
楼主写得不错,其实也不用太过谦了,大家都是从菜鸟过来的嘛!
frankzcj
驱动牛犊
驱动牛犊
  • 注册日期2007-07-26
  • 最后登录2010-01-17
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望34点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
38楼#
发布于:2008-05-07 14:03
mengji,您好!

  小弟目前也准备把32bit的sys,移植到64bit的OS中。遇到个问题,能否指导一二。

  开发环境:WinXP32bit+2003DDK+DriverStudio

   但是在编译时就遇到问题。
 选Build->Batch Build时选"Select AMD64"选项不起反应。
  是不是得在64bit的OS中装2003DDK+DriverStudio编译?
  但是我在64bit的OS中装DriverStudio后在VC6中并没有"DriverStudio"的选项。
  谢谢!
aliwy
驱动牛犊
驱动牛犊
  • 注册日期2006-11-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望79点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
39楼#
发布于:2008-07-14 21:58
为什么不更新了?
游客

返回顶部