gpt4 book ai didi

device-driver - 删除 .inf 和 .pnf 文件

转载 作者:行者123 更新时间:2023-12-05 01:48:28 25 4
gpt4 key购买 nike

我使用 .inf 文件手动安装我的驱动程序。直到现在,我从inf文件夹中删除了oem.inf和.pnf文件来卸载。每当我安装新驱动程序时,我都会删除/卸载旧的 inf 和 pnf 文件。

在我以前的卸载(通过删除 .inf 和 .pnf 文件)中,我没有修改或删除任何注册表设置。

在这种情况下,我是否要更改或删除注册表中的任何设置(例如:devnode)?

最佳答案

你应该使用 SetupUninstallOEMInf卸载 .INF(以及随后的 .PNF)文件的函数。这将处理细节。 pnputil(在 Vista 和更高版本上)应该从命令行执行相同的操作。但是,此功能不会删除当前安装的驱动程序(例如与 devnode 关联的驱动程序)。

  1. 为什么要先卸载旧驱动程序?用户可能已经为至少一个 devnode 安装了您的驱动程序。为什么不使用 Microsoft 认可的解决方案,例如 DpInst?它将执行更新驱动程序所需的工作。

  2. SUOI_FORCEDELETE 传递给 SetupUninstallOEMInf 不是一个好主意,因为你最终会在你的 devnodes 中留下挥之不去的 .INF 引用(在注册表中).

  3. 在工作中,我编写了一个名为 DriverUninstaller 的实用程序,它删除了 devnode,然后删除了 INF。 我只将此实用程序用于卸载。升级由 DpInst 处理,这是应该的。 流程大致是:

    1. 使用 SetupAPI 枚举它们(例如,如果您的设备类别是唯一的,则按设备类别)
    2. 对于每个 devnode,调用 SetupDiCallClassInstaller(DIF_REMOVE, ...)
    3. 调用 SetupDiBuildDriverInfoList 为我的设备查找所有 .INF 文件
    4. 对于每个 INF,调用 SetupUninstallOEMInf

如果有人对此实用程序感兴趣,我也许可以说服我的雇主将其开源:-)

关于device-driver - 删除 .inf 和 .pnf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11624334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com