如何卸载设备和驱动程序包
本页介绍软件如何卸载设备并从驱动程序存储中删除驱动程序包。
卸载设备
若要删除表示物理设备的设备节点(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 及更低版本中:
- 识别当前随驱动程序包一起安装的所有设备并对其进行更新,使其不依赖于驱动程序包。 可以执行以下操作之一:
- 在设备上安装其他驱动程序包。
- 将 DiInstallDevice 与标志配合使用
DIIDFLAG_INSTALLNULLDRIVER
,在设备上安装 null 驱动程序。 - 卸载设备。
- 然后,设备安装应用程序调用 SetupUninstallOEMInf 删除驱动程序包。
从驱动程序存储中删除驱动程序包将从 PnP 管理器的内部数据库中删除关联的元数据,并从系统 INF 目录中删除相关的 INF 文件。
删除驱动程序包后,不再可在设备上安装它。 若要重新安装,请再次从原始源下载驱动程序包,例如Windows 更新。