DiUninstallDriverW 函数 (newdev.h)
DiUninstallDriver 函数通过安装具有另一个匹配驱动程序包的设备(如果可用)安装驱动程序包,或者如果没有其他匹配驱动程序包可用,则从安装驱动程序包的任何设备中删除驱动程序包。 然后,从 驱动程序存储中删除指定的驱动程序包。
语法
BOOL DiUninstallDriverW(
[in, optional] HWND hwndParent,
[in] LPCWSTR InfPath,
[in] DWORD Flags,
[out, optional] PBOOL NeedReboot
);
参数
[in, optional] hwndParent
DiUninstallDriver 的顶级窗口句柄应用于显示与卸载驱动程序关联的任何用户界面组件。 此参数是可选的,可以设置为 NULL。
[in] InfPath
指向 NULL 终止的字符串的指针,该字符串为 驱动程序包提供 INF 文件的完全限定路径。
[in] Flags
一个类型为 DWORD 的值,指定以下标志中的零个或多个:DIURFLAG_NO_REMOVE_INF。 通常,此标志应设置为零。
如果此标志为零,则 DiUninstallDriver 使用其他匹配驱动程序包安装这些设备(如果可用),或者如果没有其他匹配驱动程序包可用,则从安装驱动程序包的任何设备中删除驱动程序包。 但是,如果此标志设置为DIURFLAG_NO_REMOVE_INF,DiUninstallDriver 从安装的任何设备中删除驱动程序包,但不从驱动程序存储中删除驱动程序包。
[out, optional] NeedReboot
指向 BOOL 类型的值的指针,该值 DiUninstallDriver 设置为指示是否需要系统重启才能完成卸载。 此参数是可选的,可以 NULL。 如果提供参数并且需要系统重启才能完成卸载,
返回值
返回代码 | 描述 |
---|---|
|
调用方没有管理员权限。 默认情况下,Windows 要求调用方具有管理员权限,才能从 驱动程序存储卸载 驱动程序包。 |
|
指定的 INF 文件的路径不存在。 |
|
为 标志 指定的值不等于零或DIURFLAG_NO_REMOVE_INF。 |
|
调用应用程序是一个 32 位应用程序,它尝试在 64 位环境中执行,这是不允许的。 有关详细信息,请参阅 在 64 位系统上安装设备。 |
言论
一般情况下,卸载应用程序应将 NeedReboot 设置为 NULL 以指示 DiUninstallDriver,以提示用户重启系统(如果需要重启才能完成删除)。 应用程序应仅在以下情况下提供 NeedReboot 指针:
- 应用程序必须多次调用 DiUninstallDriver 才能完成卸载。 在这种情况下,应用程序应记录 TRUENeedReboot 值是否由对 DiUninstallDriver 的任何调用返回,如果是,则提示用户在 DiUninstallDriver 返回后重启系统。
- 在系统重启之前,应用程序必须执行所需的操作,而不是调用 DiUninstallDriver。 如果需要系统重启,应用程序应完成所需的操作,然后提示用户重启系统。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows 10 版本 1703 及更高版本的 Windows 中可用。 |
目标平台 | 桌面 |
标头 | newdev.h (包括 Newdev.h) |
库 | Newdev.lib |