使用DpInst安装驱动程序

    出差时发现一些大公司使用DpInst工具安装驱动,当时觉得这种方式安装驱动相当方便,出于好奇回来后自己也尝试这种安装方式。

    DpInst.exe工具位于ddk目录redist\DIFx\dpinst\EngMui下,同时M$在src\setup\DPInst目录下提供了定制DpInst驱动安装包的样例。一个基本的驱动安装包至少要包含cat,sys(已签名,测试签名也可以,为cat和sys做测试签名的方法可以参考这里)和inf这些文件,除此之外可能需要dll(CoIntall)文件。DpInst安装这样的驱动包后,控制面板-程序和功能面板中会出现一项,如下图是我安装toaster后在程序和功能面板中多出的项:
(图1)
    注重程序外表的人(反正我不是)可能不满足这样的图标,一定要自己定制一个图标,这就可以参考src\setup\DPInst:提供一个DpIn.xml,里面指定需要定制的图标文件等。
    DpInst安装驱动包后,会在C:\WINDOWS\system32\DRVSTORE目录下产生一个形如"驱动程序名_xxxx"(图2)的文件夹,里面包含了cat/sys/inf等文件(图3)。
(图2)
(图3)
当系统检测到有新设备插入时,PNP管理器会到这个目录匹配HDIW,如果HWID和inf文件中指定的HWID恰能匹配,则为新设备安装驱动。
    怎样,是不是觉得DpInst是一个方便的驱动安装工具?开始时,我的确这样觉得,但在测试中我发现了一些不足:没法为已存在的设备栈再安装过滤驱动。仍然以toaster驱动为例:用DpInst安装如下的两个驱动包:1.toaster功能驱动驱动包(simple.inf/toaster.sys/toaster.cat);2.filter过滤驱动驱动包(filter.inf/devupper.sys/toaster.cat)。虽然DpInst都能成功安装驱动,但最多只有功能驱动能正常工作,如图4
(图4)
从图中可以看到DRVSTORE目录下的确已经存在两个驱动包,但是模拟设备插入后仅安装了simple.inf指定的设备。另外,注册表信息也反应了toaster设备堆栈上并没有插入过滤驱动:
(图5)
如果将DpInst替换为熟悉的devcon.exe工具,倒可以将过滤驱动安装到设备栈中,如图5:


(图5)

(图6)
虽然devcon需要通过install/update的一系列复杂动作才能把过滤驱动装到设备栈中,但至少比DpInst装不了第三方驱动要好点,为此我问过日本同事DpInst为什么不能做到安装第三方过滤驱动的原因,他的解释是Pnp管理器在DrvStore目录中匹配到了符合条件的HWID(simple驱动包),因此就不会再安装filter过滤驱动包。当然,我们也可以通过用SetupDi接口将过滤驱动安装到合适的位置。
DPInst.exe: installs and uninstalls driver packages. DPInst.exe: 安装及删除驱动程序包。 By default, the tools searches the current directory and tries to install all driver packages found. 默认情况下,此工具会搜索当前目录并尝试安装找到的驱动程序包。 Usage: DPInst.exe [/U INF-file][/S | /Q][/LM][/P][/F][/SH][/SA][/A][/PATH Path][/EL][/L LanguageID][/C][/D][/LogTitle Title][/SW][/? | /h | /help] 用法:DPInst.exe [/U INF-file][/S | /Q][/LM][/P][/F][/SH][/SA][/A][/PATH Path][/EL][/L LanguageID][/C][/D][/LogTitle Title][/SW][/? | /h | /help] /U path to INF file Uninstall a driver package (INF-file). /U 指定 INF 文件 删除一个驱动程序包(INF-文件)。 /S | /Q Silent (Quiet) mode. Suppresses the Device Installation Wizard and any dialogs popped-up by the operating system. /LM Legacy mode. Accepts unsigned driver packages and packages with missing files. These packages won't install on the latest version of Windows. /LM 传统模式。接受未签名的驱动包(缺少.cat文件)以及包中有文件丢失。 /P Prompt if the driver package to be installed is not better than the current one. /P 如果驱动包已经安装以及比当前使用的版本要旧就发出提示。 /F Force install inf the driver package is not better than the current one. /F 强制安装比当前使用的版本要旧的驱动包。 /SH Scans hardware for matching devices and only copies and installs those drivers for which a device is present. Only valid for Plug and Play drivers. /SH 仅仅对已插入的匹配的硬件设备进行扫描。 /SA Suppress the Add/Remove Programs entry normally created for each driver package. /SA 禁止“添加或删除程序”创建卸载项。 /A Install all or none. /PATH Path Search for driver packages under the given path. /PATH 路径 在指定的路径下搜索驱动程序包。 /EL Enables all languages not explicitly listed in the XML file. /L LanguageID Tries to use the given language in all UI. Useful for localization tests. /SE Suppress the EULA. /SE 禁止最终用户许可协议。 /C Dump logging output to attached Console (Windows XP and above). /C 转存日志文件输出到附加控
dpinst是一个用于驱动程序安装的工具,它常被用于Windows操作系统。 想要下载dpinst安装工具,首先可以通过访问微软的官方网站来获取。在微软的网站上,我们可以找到驱动程序安装工具的相关页面。在该页面上,我们可以找到dpinst的最新版本的下载链接。通过点击链接,可以下载一个安装包,该安装包内包含了dpinst工具的可执行文件。 另外,也可以通过在搜索引擎中搜索dpinst安装工具的下载。在搜索结果中,可能会出现多个网站提供下载dpinst的链接。在选择下载链接时,建议选择可信度高、用户评价较好的网站进行下载,以确保下载的安装包没有携带恶意软件或病毒。 下载完成后,需要双击安装包来运行安装程序。安装程序会引导用户完成dpinst工具的安装过程。用户只需要按照安装向导的提示,选择安装的目标路径和其他相关选项,然后点击“下一步”或“安装”按钮即可完成安装安装完成后,用户可以在选择安装路径中找到dpinst的可执行文件。通过双击该文件,可以启动dpinst工具并使用它来进行驱动程序安装。用户可以根据实际需求,选择要安装驱动程序文件,然后按照dpinst的提示完成安装过程。 总之,下载和安装dpinst工具相对简单,只需访问微软官方网站或可信的第三方网站,下载安装包并按照安装向导的指引进行安装即可。安装完成后,用户即可使用dpinst工具来进行驱动程序安装
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值