辅助安装程序界面
注意
不支持本部分所述的功能,并且包含这些功能的驱动程序包将不再收到 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 执行了任何适当的操作,并请求在类安装程序处理请求后再次调用。
辅助安装程序不会将返回状态设置为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 代码后调用辅助安装程序时,PostProcessing 为 TRUE。 PostProcessing 对共同安装程序是只读的。
如果 PostProcessing 为 FALSE,则 InstallResult 不相关。 如果 PostProcessing 为 TRUE, 则 InstallResult 为安装请求的当前状态。 此值NO_ERROR或为此安装请求调用的前一个组件返回的错误状态。 辅助安装程序可以通过为其函数返回返回返回返回此值来传播状态,也可以返回其他状态。 InstallResult 对辅助安装程序是只读的。
PrivateData 指向共同安装程序分配的缓冲区。 如果共同安装程序设置此指针并请求后处理, 则 SetupDiCallClassInstaller 在调用辅助安装程序进行后处理时将指针传递给辅助安装程序。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈