如何卸载设备和驱动程序包

本页介绍软件如何卸载设备并从驱动程序存储中删除驱动程序包

卸载设备

若要删除表示物理设备的设备节点(devnode),请使用以下项之一:

  • 若要仅卸载指定的设备,请使用调用 SetupAPI 函数 SetupDiCallClassInstaller 并请求DIF_REMOVE的设备安装应用程序

  • 若要在设备树中卸载指定的设备及其下的任何设备,请使用调用 DiUninstallDevice 函数的设备安装应用程序。

使用这些方法之一卸载设备时,即插即用 (PnP) 管理器会删除驱动程序二进制文件和设备之间的关联。

设备保留在内核 PnP 树中,驱动程序包保留在驱动程序存储。 如果 PnP 管理器重新枚举设备(例如,如果设备被拔出,然后再次插入),则 PnP 管理器将其视为新设备实例,并从驱动程序存储安装驱动程序包。

有关最终用户如何卸载设备的信息,请参阅使用设备管理器卸载设备和驱动程序包

从驱动程序存储中删除驱动程序包

若要从驱动程序存储中删除驱动程序包,必须:

  • 确保未随驱动程序包一起安装任何设备。
  • 从驱动程序存储中删除驱动程序包。

若要通过一个操作执行这两个步骤,可以执行下列操作之一:

  • 从 Windows 10 版本 1607 开始,从命令提示符处使用 pnputil /delete-driver <example.inf> /uninstall。 有关 PnPUtil 命令的信息,请参阅 PnPUtil 命令语法
  • 从 Windows 10 版本 1703 开始,设备安装应用程序可以调用 DiUninstallDriverW

在 Windows 10 版本 1511 及更低版本中:

  1. 识别当前随驱动程序包一起安装的所有设备并对其进行更新,使其不依赖于驱动程序包。 可以执行以下操作之一:
    1. 在设备上安装其他驱动程序包。
    2. DiInstallDevice 与标志配合使用 DIIDFLAG_INSTALLNULLDRIVER ,在设备上安装 null 驱动程序。
    3. 卸载设备
  2. 然后,设备安装应用程序调用 SetupUninstallOEMInf 删除驱动程序包。

从驱动程序存储中删除驱动程序包将从 PnP 管理器的内部数据库中删除关联的元数据,并从系统 INF 目录中删除相关的 INF 文件。

删除驱动程序包后,不再可在设备上安装它。 若要重新安装,请再次从原始源下载驱动程序包,例如Windows 更新。

驱动程序存储中手动删除驱动程序包可能会导致不可预知的行为。