SetupDiCallClassInstaller 函数 (setupapi.h)

SetupDiCallClassInstaller 函数调用相应的类安装程序和任何已注册的辅助安装程序,并将指定的安装请求 (DIF 代码) 。

语法

WINSETUPAPI BOOL SetupDiCallClassInstaller(
  [in]           DI_FUNCTION      InstallFunction,
  [in]           HDEVINFO         DeviceInfoSet,
  [in, optional] PSP_DEVINFO_DATA DeviceInfoData
);

参数

[in] InstallFunction

设备安装请求 (DIF 请求) 传递给辅助安装程序和类安装程序。 DIF 代码的格式 为 DIF_XXX ,并在 Setupapi.h 中定义。 有关详细信息 ,请参阅设备安装功能代码

注意 对于某些 DIF 请求,调用方必须是 Administrators 组的成员。 对于此类 DIF 请求,此要求在关联的默认处理程序的参考页上列出。
 

[in] DeviceInfoSet

为本地计算机 设置的设备信息的 句柄。 此集包含一个设备安装元素,该元素表示要为其执行指定安装功能的设备。

[in, optional] DeviceInfoData

指向 SP_DEVINFO_DATA 结构的指针,该结构指定 DeviceInfoSet 中的设备信息元素,该元素表示要为其执行指定安装功能的设备。 此参数是可选的,可以设置为 NULL。 如果指定此参数, SetupDiCallClassInstallerDeviceInfoData 元素执行指定的功能。 如果 DeviceInfoDataNULL则 SetupDiCallClassInstaller 为与 DeviceInfoSet 关联的安装程序类调用安装程序。

返回值

如果成功,函数将返回 TRUE 。 否则,它将返回 FALSE ,并且可以通过调用 GetLastError 来检索记录的错误。

当 GetLastError 返回 ERROR_IN_WOW64时,这意味着调用应用程序是尝试在 64 位环境中执行的 32 位应用程序,这是不允许的。

注解

SetupDiCallClassInstaller 调用类安装程序以及为设备或 设备安装程序类注册的任何辅助安装程序。 如果安装程序尚未加载,此函数将加载安装程序。 如果存在默认处理程序,并且安装程序返回指示应调用默认处理程序的状态,则函数还会调用 DIF 请求的默认处理程序。

设备安装应用程序 使用各种 设备安装函数代码 (DIF 代码) 调用此函数。 函数确保以正确的顺序为给定 DIF 请求调用所有适当的安装程序和默认处理程序。 有关详细信息,请参阅 处理 DIF 代码

SetupDiCallClassInstaller 返回 TRUE 后,设备安装应用程序必须调用 SetupDiGetDeviceInstallParams 以获取SP_DEVINSTALL_PARAMS结构。 如果设置了结构的 DI_NEEDREBOOTDI_NEEDRESTART 标志,则调用方必须提示用户重启系统。 例如,调用方可以通过调用 SetupPromptReboot 来执行此操作。

但请注意,设备安装应用程序最多应请求系统重启一次。 因此,创建对 SetupDiCallClassInstallerSetupDiGetDeviceInstallParams 的多个调用的任何设备安装应用程序都应在每次调用后保存 DI_NEEDREBOOTDI_NEEDRESTART 标志。 但是,它应仅在最后一次调用返回后提示用户。

为了响应 SetupDiCallClassInstaller 提供的 DIF 代码,类安装程序和辅助安装程序可能会执行需要重新启动系统的操作。 在这种情况下,安装程序或辅助安装程序应执行以下操作:

  1. 调用 SetupDiGetDeviceInstallParams 以获取 SP_DEVINSTALL_PARAMS 结构。
  2. 在结构的 Flags 成员中设置 DI_NEEDREBOOTDI_NEEDRESTART 标志。
  3. 调用 SetupDiSetDeviceInstallParams,并提供更新的 SP_DEVINSTALL_PARAMS 结构,以保存修改后的 Flags 成员。
SetupDiCallClassInstaller 返回后,调用它的设备安装应用程序应调用 SetupDiGetDeviceInstallParams,检查标志,并在必要时请求重启。

DeviceInfoSet 指定的设备信息集只能包含本地计算机上的设备的元素。

有关协同安装程序的设计和操作的信息,请参阅 编写共同安装程序

要求

要求
最低受支持的客户端 在 Microsoft Windows 2000 及更高版本的 Windows 中可用。
目标平台 桌面
标头 setupapi.h (包括 Setupapi.h)
Library Setupapi.lib
DLL Setupapi.dll
API 集 ext-ms-win-setupapi-classinstallers-l1-1-0 (引入Windows 8)

另请参阅

SP_DEVINFO_DATA