DiShowUpdateDevice 函数 (newdev.h)

DiShowUpdateDevice 函数显示指定设备的硬件更新向导。

语法

BOOL DiShowUpdateDevice(
  [in, optional]  HWND             hwndParent,
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PSP_DEVINFO_DATA DeviceInfoData,
  [in]            DWORD            Flags,
  [out, optional] PBOOL            NeedReboot
);

参数

[in, optional] hwndParent

DiShowUpdateDevice 用来显示与更新指定设备关联的任何用户界面组件的顶级窗口的句柄。 此参数是可选的,可以设置为 NULL

[in] DeviceInfoSet

设备信息集的句柄,其中包含设备信息元素,该元素表示要显示其硬件更新向导的设备。

[in] DeviceInfoData

指向 SP_DEVINFO_DATA 结构的指针,该结构表示要显示其硬件更新向导的设备。

[in] Flags

该参数必须设置为零。

[out, optional] NeedReboot

指向 BOOL 类型的值的指针, DiShowUpdateDevice 设置该值指示是否需要重启系统才能完成驱动程序更新。 此参数是可选的,可以为 NULL。 如果提供了 参数,并且需要重启系统才能完成驱动程序更新, 则 DiShowUpdateDevice 会将值设置为 TRUE。 在这种情况下,调用方必须提示用户重启系统。 如果提供了此参数,并且不需要系统重启即可完成安装, 则 DiShowUpdateDevice 会将值设置为 FALSE。 如果 参数为 NULL 并且需要重启系统才能完成驱动程序更新, 则 DiShowUpdateDevice 将显示系统重启对话框。 有关此参数的详细信息,请参阅以下 “备注” 部分。

返回值

如果硬件更新向导成功更新指定设备的驱动程序,DiShowUpdateDevice 将返回 TRUE。 否则, DiShowUpdateDevice 返回 FALSE ,可以通过调用 GetLastError 来检索记录的错误。 GetLastError 可能返回的一些更常见的错误值如下所示:

返回代码 说明
ERROR_ACCESS_DENIED
调用方没有管理员权限。 默认情况下,Windows 要求调用进程具有更新 驱动程序包的管理员权限。
ERROR_CANCELLED
用户取消了硬件更新向导。
ERROR_IN_WOW64
调用应用程序是尝试在 64 位环境中执行的 32 位应用程序,这是不允许的。 有关详细信息,请参阅 在 64 位系统上安装设备
ERROR_INVALID_FLAGS
Flags 指定的值不等于零。

注解

DiShowUpdateDevice 显示指定设备实例的硬件更新向导。 有关如何使用硬件更新向导更新设备驱动程序的信息,请参阅帮助和支持中心。

通常,安装应用程序应将 NeedReboot 设置为 NULL ,以便系统在需要重启以完成硬件更新时自动启动系统重启。 应用程序应仅在以下情况下提供 NeedReboot 指针:

  • 安装应用程序必须多次调用 DiShowUpdateDevice 才能完成硬件更新。 在这种情况下,应用程序应记录对 DiShowUpdateDevice 的任何调用是否返回 TRUENeedReboot 值,如果是,则提示用户在最终调用 DiShowUpdateDevice 返回后重启系统。
  • 应用程序必须执行所需的操作,而不是调用 DiShowUpdateDevice,然后系统重启。 如果需要重启系统,应用程序应完成所需的操作,然后提示用户重启系统。
若要回滚设备的驱动程序而不是调用硬件更新向导,请调用 DiRollbackDriver

若要为设备安装新驱动程序而不是调用硬件更新向导,请调用 DiInstallDriverUpdateDriverForPlugAndPlayDevices

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 中可用。
目标平台 桌面
标头 newdev.h (包括 Newdev.h)
Library Newdev.lib
DLL Newdev.dll

另请参阅

DiInstallDriver

DiRollbackDriver

UpdateDriverForPlugAndPlayDevices