辅助安装程序界面

注意

不支持本部分所述的功能,并且包含这些功能的驱动程序包将不再收到 Microsoft 签名。 请参阅 使用通用 INF 文件

共同安装程序的接口由导出的入口点函数和关联的数据结构组成。

辅助安装程序入口点

共同安装程序必须导出具有以下原型的入口点函数:

typedef DWORD 
  (CALLBACK* COINSTALLER_PROC) (
    IN DI_FUNCTION  InstallFunction,
    IN HDEVINFO  DeviceInfoSet,
    IN PSP_DEVINFO_DATA  DeviceInfoData  OPTIONAL,
    IN OUT PCOINSTALLER_CONTEXT_DATA  Context
    );

InstallFunction
指定要处理的设备安装请求,其中辅助安装程序可以选择参与。 这些请求是使用 DIF 代码(如 DIF_INSTALLDEVICE)指定的。 有关详细信息,请参阅 设备安装功能代码

DeviceInfoSet
提供 设备信息集的句柄。

DeviceInfoData
(可选)标识作为设备安装请求目标的设备。 如果此参数为非 NULL,它将标识设备信息集中的设备信息元素。 当 SetupDiCallClassInstaller 调用特定于设备的辅助安装程序时,DeviceInfoData 为非 NULL。 可以使用具有 NULLDeviceInfoData 的 DIF 请求(如 DIF_DETECT 或 DIF_FIRSTTIMESETUP)调用特定于类的共同安装程序。

上下文
指向 COINSTALLER_CONTEXT_DATA 结构。

设备辅助安装程序返回以下值之一:

NO_ERROR
共同安装程序为指定的 InstallFunction 执行了相应的操作,或者共同安装程序确定它不需要对请求执行任何操作。

如果辅助安装程序收到无法识别的 DIF 代码,还必须返回NO_ERROR。 (请注意,类安装程序返回无法识别的 DIF 代码ERROR_DI_DO_DEFAULT。)

ERROR_DI_POSTPROCESSING_REQUIRED
辅助安装程序为指定的 InstallFunction 执行了任何适当的操作,并请求在类安装程序处理请求后再次调用。

Win32 错误
辅助安装程序遇到错误。

辅助安装程序不会将返回状态设置为ERROR_DI_DO_DEFAULT。 此状态只能由类安装程序使用。 如果辅助安装程序返回此状态, SetupDiCallClassInstaller 将不会正确处理 DIF_Xxx 请求。 辅助安装程序可能会在其后处理阶段 传播 ERROR_DI_DO_DEFAULT的返回状态,但它永远不会 设置 此值。

COINSTALLER_CONTEXT_DATA

COINSTALLER_CONTEXT_DATA是描述安装请求的特定于共同安装程序的上下文结构。 结构的格式为:

typedef struct 
  _COINSTALLER_CONTEXT_DATA {
      BOOLEAN  PostProcessing;
      DWORD    InstallResult;
      PVOID    PrivateData;
  } COINSTALLER_CONTEXT_DATA, *PCOINSTALLER_CONTEXT_DATA;

以下列表描述了此结构的成员:

  • 在相应的类安装程序(如果有)处理 InstallFunction 指定的 DIF 代码后调用辅助安装程序时,PostProcessingTRUEPostProcessing 对共同安装程序是只读的。

  • 如果 PostProcessingFALSE,则 InstallResult 不相关。 如果 PostProcessingTRUE则 InstallResult 为安装请求的当前状态。 此值NO_ERROR或为此安装请求调用的前一个组件返回的错误状态。 辅助安装程序可以通过为其函数返回返回返回返回此值来传播状态,也可以返回其他状态。 InstallResult 对辅助安装程序是只读的。

  • PrivateData 指向共同安装程序分配的缓冲区。 如果共同安装程序设置此指针并请求后处理, 则 SetupDiCallClassInstaller 在调用辅助安装程序进行后处理时将指针传递给辅助安装程序。