利用 devcon.exe实现自动安装驱动(转)
http://blog.csdn.net/u012814201/article/details/44919125
工作的原因打算通过devcon.exe实现自动打包的功能,由于之前一直在Linux那个神奇的世界里遨游,初到Windows这个世界真是茫然失措,
开始之前公司一哥们告诉我想实现什么功能,大概了解一下后就开始了,无奈菜鸟一枚就找度娘解决吧,遨游了两天找各种资料去了解相关
的概念,可算知道一点了,好了,到重点了:
由于提供了相应的.inf和.sys文件,在Windows自带的设备管理器中可以正常安装,但!!!在devcon中却安装出来了两个驱动文件,
属于菜鸟的我就在网上一顿神找啊,找到的结果就是安装命令 devcon -r install D:dbg\PKU_umal.inf "PCI\VEN_100B&DEV_FF2F"
D:dbg\PKU_umal.inf 是我的目录下文件, "PCI\VEN_100B&DEV_FF2F"设备ID
用这种方法安装出来会出现两个驱动,一个好使,一个带黄色感叹号;怎么update也不好使。郁闷啊!!!又自学了.inf的原理,一步步
跟下来也没有错误,想是不是国产平台不行?最后验证是可以的。用这种方法安装后只能重启后再安(我的有C盘保护,要不我得哭),
不重启只会出现一个带黄色感叹号的驱动。
网上找了好多资料也解决不了,终于在今天早上,看了圣经中的一句话,“你若能信,在信的人,凡是都能”,中午没有午休就找出原因了,
根据源码慢慢分析发现,在执行devcon -r D:dbg\PKU_umal.inf "PCI\VEN_100B&DEV_FF2F"命令时,是分两步进行的,第一步执行cmdinstall()
函数进行安装,在cmdinstall()函数中结尾处又调用了cmdupdate()函数,这个是重点!!!!!cmdupdate()函数会再次安装设备驱动,这就
导致出现了两个设备驱动的现象,并且还有一个是带黄色感叹号的,原来原因就是出现在了cmdupdate()函数中;cmdupdate()函数是由update
命令进行调用的,但只是解决了一半,怎么做???不知道。不知道怎么来了灵感自己组合修改命令,终于试出来啦!
///////////////////////////////////////////////////////////////////////////
devcon -r rescan D:dbg\PKU_umal.inf "PCI\VEN_100B&DEV_FF2F"
devcon -r update D:dbg\PKU_umal.inf "PCI\VEN_100B&DEV_FF2F"
///////////////////////////////////////////////////////////////////////////
devcon -r rescan D:dbg\PKU_umal.inf "PCI\VEN_100B&DEV_FF2F"会扫描与ID号相关的设备驱动,即使把网络控制器删除也能更新出来
就是这么牛!这个功能相当于设备管理器发现新硬件的功能。
devcon -r update D:dbg\PKU_umal.inf "PCI\VEN_100B&DEV_FF2F"
这句命令折磨了我好久,更新就刷新一下呗!这么理解就错了,其实主要实现的是具有安装功能的刷新!
到此为止我的自动驱动安装还没出现BUG!
总结一下,有能力还是多看源码,英文手册,真的很有用。
“你若能信,在信的人,凡是都能”
利用 devcon.exe实现自动安装驱动(转)的更多相关文章
- 利用AutoSPSourceBuilder和Autospinstaller自动安装SharePoint Server 2013图解教程——Part 1
这是一篇对之前 <利用AutoSPSourceBuilder和Autospinstaller自动安装SharePoint Server 2013图解教程——Part 2>的补充.本篇博客将 ...
- Installshield自动安装IIS组件
原文:Installshield自动安装IIS组件 一. 工程类型:IS2010 installscript 二.原理: 1. XP和 Server2003系统:由于系统默认没有自带IIS组件,一般情 ...
- 转:禁止360随身wifi驱动自动安装
from:http://bbs.360safe.com/thread-2643500-1-1.html 有曾经数次卸载随身wifi后,插上又会自动安装随身wifi驱动的,也可以看看下面的解决办法. 卸 ...
- [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe
写在前面 原文地址:C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe 这篇文章躺在我的收藏夹中有很长一段时间了,今天闲着没事,就自己动手实践了一下.感觉 ...
- Install Shield中调用devcon自动安装硬件驱动程序
1.安装驱动程序命令devcon安装好WINDDK之后,devcon.exe在"C:\WINDDK\3790.1830\tools\devcon"目录下.>devcon up ...
- Window Server 2019 配置篇(6)- 利用组策略实现域内自动安装软件
上次我们建立了WSUS实现了更新管理,那么现在我们需要的是让集群内的客户机(之后会建立在hyper-v集群上)和服务器都能装上三个软件 1. Microsoft Team 2. Notepad++ 3 ...
- monkeyrunner之电脑安装驱动(五)
在Monkeyrunner做自动化测试时,可以使用模拟器,当然也可以选择用真机.不过,要想通过电脑来安装软件,操作手机,则必须先安装手机驱动,而且一般手机连接电脑之后,电脑会自动开始下载驱动.不过也经 ...
- 使用LabVIEW如何生成应用程序(exe)和安装程序(installer)
主要软件: LabVIEW Development Systems>>LabVIEW Professional Development System主要软件版本: 2012主要软件 ...
- win10x64 批处理自动安装打印机
系统版本:Windows 10企业版 64位(10.0 ,版本17134)- 中文(简体) 话不多说,直接上脚本: REM 提升管理员权限 @echo off chcp 65001 >nul s ...
随机推荐
- 派生类&简单工厂模式
派生类&简单工厂模式 git链接: Operation3.1.1 题目描述的代码部分的解释 首先是声明一个Rand类作为父类,然后两个子类RandNumber类和RandOperation类, ...
- 剑指offer:从上往下打印二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路: 实际就是二叉树的中序遍历问题.之前在leetcode刷过类似题目. 利用队列完成即可. 代码: /* struct Tr ...
- Alpha冲刺——day10
Alpha冲刺--day10 作业链接 Alpha冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602634 ...
- C语言入门:02.第一个C语言程序
一.开发工具的选择(1)可以用来写代码的工具:记事本.UltraEdit.Vim.Xcode等(2)选择Xcode的原因:苹果官方提供的开发利器.简化开发过程.有高亮显示功能 (3)使用Xcode新建 ...
- [转帖] tmux 的使用说明
之前曾经看过 tmux 的简介 但是一直不会用 这次 看了下 原来是这么处理 不过 用windows 多了 还是感觉鼠标 操作多一些 全键盘操作的习惯 还是没有养成. 原贴地址: https://ww ...
- 两种常用文件分享方式 - 网络硬盘快速分享, 点对点的文件共享 BitTorrent Sync
普通的用户经常通过电子邮件.QQ传递等方式进行文件的分享,但是由于不同的网络环境有的时候可能会有不同的限制,所以我们就需要寻找其他的方式来替代.今天就为大家推荐两个既常用又与众不同的分享方式. 中国论 ...
- BZOJ2728 HNOI2012与非(并查集+数位dp)
容易发现x nand x=not x.并且使用这个性质有x and y=not(x nand y)=(x nand y)nand(x nand y).也就是说nand运算可以作为not和and运算使用 ...
- Winform Treeview 排序及图标处理
一.排序 1. 继承 IComparer 2. treeView1.TreeViewNodeSorter = this; 3. 实现IComparer public int Compare(ob ...
- 【bzoj2754】 SCOI2012—喵星球上的点名
http://www.lydsy.com/JudgeOnline/problem.php?id=2754 (题目链接) 题意 给出$n$个名字串,$m$个点名串,问对于每一个姓名串,它包含多少个点名串 ...
- idea问题总结记录
1.部署tomcat后,tomcat日志报错:java.lang.ClassNotFoundException 1.1 原因: tomcat虽然部署成功,但是并没有把本项目中访问服务器所需的类库加到W ...