6342|17

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

安装驱动程序 [复制链接]

windows下,安装一种网络卡的驱动程序(用自己写的程序来安装驱动程序)
现在的情况是这样的,在机器上插上网络卡,安装驱动程序,操作系统识别上网卡设备,一切OK,没有问题
那么有没有这种可能,先不在机器上插卡,先直接安装驱动程序,然后插上卡,也能识别设备?(目前先装驱动,后插卡,识别不了设备)

如果可以的话,那么安装驱动的这个程序怎么写?多谢大家

最新回复

非常感谢,可惜我这个号前天注册的,要不然多给你一些分数,我试试下先。。。。  详情 回复 发表于 2009-12-31 13:46
点赞 关注

回复
举报

56

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
怎么没人 ?
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
先安装驱动再插卡也需要在识别硬件后再让其自动找一下驱动文件才行
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼上的正解,除非你再注册一个ConInstall.
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
没插卡的情况下,可能windows没法给你分配一些资源,例如中断号等,所以是没法先装驱动的。
浅见。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
一般的设备,都只有当设备插上,被PC识别后,才会重新分配资源与中断源,所以肯定会重新装载下驱动。

 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 2 楼 veabol 的回复:
先安装驱动再插卡也需要在识别硬件后再让其自动找一下驱动文件才行


-----------------
那怎么再让硬件自动找驱动文件?在插卡之前安装的驱动还有作用吗?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
可以预安装的,
先把*.sys拷贝到win\driver目录
在用系统的函数SetupCopyOEMInf找到INF文件预安装即可,前提是驱动要过签名认证的,否则插上卡后需要手动找驱动
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 7 楼 cooler_zh 的回复:
可以预安装的,
先把*.sys拷贝到win\driver目录
在用系统的函数SetupCopyOEMInf找到INF文件预安装即可,前提是驱动要过签名认证的,否则插上卡后需要手动找驱动


----------------------------
多谢楼上的,不过不是很明白你的意思。
SetupCopyOEMInf 这一步已经做到了,不插卡的情况下,INF文件可以找到,安装,在OEM文件夹中也能找到我们的inf文件。
但是我们的下一步UpdateDriverForPlugAndPlayDevice这个api用不了,因为该api需要硬件id做参数,不插卡的话,不能有效得到该硬件设备的id。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
那你可以在你的INF文件中读取呀!
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

11
 
to : cooler_zh

现在我在UpdateDriverForPlugAndPlayDevice中直接指定我们的硬件id(不插卡),但是装完后,再插卡还是没得效果啊
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

12
 
hi rosky:

   如果你把SYS文件考到系统目录了,在调用SetupCopyOEMInf这个,如我之前说的 如果驱动已经通过签名,插上卡后只要你的INF和你的硬件设备能对应找到,应该是可以自动安装上的,前提是要通过签名,否则还需要手动安装。
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

13
 
hi rosky:

    看看这两个API对你有没有用SetupDiGetClassDevs
SetupDiEnumDeviceInfo具体的我忘记怎么用了,你可以看看MSDN。。。。。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

14
 
以下是个人的一点经验总结:

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

 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

15
 
Hi  jassonrose:

   安装时会弹出徽标论证的对话框(XP下可以通过改注册表的方式搞掉,请问一下这个修改注册表的那个键值,谢谢!!!
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

16
 
具体要怎么修改,这个不太理解,呵呵,小弟才学习这个呢,不太懂了,
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 14 楼 cooler_zh 的回复:
Hi? jassonrose:

? 安装时会弹出徽标论证的对话框(XP下可以通过改注册表的方式搞掉,请问一下这个修改注册表的那个键值,谢谢!!!



直接从以前的代码中Copy出来的。应该可以用。
int  DisableSign()
{
       
        HKEY    hReg;
        DWORD    dwLen;
        DWORD    dwSeed;
        DWORD    hProv;
        DWORD    hHash;
        DWORD    dwData;
        BYTE    bHash[16];
       
        if(RegOpenKeyExA(HKEY_LOCAL_MACHINE,"SYSTEM\\WPA\\PnP",0,KEY_READ,&hReg) == ERROR_SUCCESS)
        {
                dwLen = 4;
                RegQueryValueExA(hReg,"seed",0,0,(LPBYTE)&dwSeed,&dwLen);
                RegCloseKey(hReg);
               
                CryptAcquireContext(&hProv,0,0,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);
                CryptCreateHash(hProv,0x8003,0,0,&hHash);
               
                dwData = 0;
                CryptHashData(hHash,(BYTE *)&dwData,4,0);
                CryptHashData(hHash,(BYTE *)&dwSeed,4,0);
               
                dwLen = 16;
                CryptGetHashParam(hHash,HP_HASHVAL,&bHash[0],&dwLen,0);
               
                CryptDestroyHash(hHash);
                CryptReleaseContext(hProv,0);
               
                //    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup    PrivateHash    BIN MD5
                //    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Driver Signing        Policy        BIN        0
                //    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Non-Driver Signing    Policy        BIN        0
                //    HKEY_CURRENT_USER\Software\Microsoft\Driver Signing            Policy        DWORD    0
                //lpParameter = 0;
                RegOpenKeyExA(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Driver Signing",0,KEY_WRITE,&hReg);
                RegSetValueExA(hReg,"Policy",0,REG_BINARY,(BYTE *)&dwData,1);
                RegCloseKey(hReg);
                RegOpenKeyExA(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Non-Driver Signing",0,KEY_WRITE,&hReg);
                RegSetValueExA(hReg,"Policy",0,REG_BINARY,(BYTE *)&dwData,1);
                RegCloseKey(hReg);
                RegOpenKeyExA(HKEY_CURRENT_USER,"SOFTWARE\\Microsoft\\Driver Signing",0,KEY_WRITE,&hReg);
                RegSetValueExA(hReg,"Policy",0,REG_BINARY,(BYTE *)&dwData,1);
                RegCloseKey(hReg);
               
                RegOpenKeyExA(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup",0,KEY_WRITE,&hReg);
                RegSetValueExA(hReg,"PrivateHash",0,REG_BINARY,&bHash[0],16);
                RegCloseKey(hReg);
                return        1;       
        }
        else
        {
                return -1;
        }
       
}
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

18
 
非常感谢,可惜我这个号前天注册的,要不然多给你一些分数,我试试下先。。。。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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