IBackgroundCopyJobHttpOptions3::SetServerCertificateValidationInterface 方法(bits10_3.h)

打开 HTTPS 连接时,将发送服务器证书。 使用此方法设置要调用的回调以验证这些服务器证书。

语法

HRESULT SetServerCertificateValidationInterface(
  IUnknown *certValidationCallback
);

参数

certValidationCallback

类型:IUnknown*

指向实现 IBackgroundCopyServerCertificateValidationCallback的对象的指针。 若要删除当前回调接口指针,请将此参数设置为 nullptr

返回值

类型:HRESULT

如果函数成功,则返回 S_OK。 否则,它将返回 HRESULT错误代码

返回值 描述
E_NOINTERFACE 传递无法查询 IBackgroundCopyServerCertificateValidationCallback的接口指针。
BG_E_READ_ONLY_WHEN_JOB_ACTIVE 作业的状态必须为 PAUSED 才能设置回调。

言论

如果要在服务器证书上执行自己的检查,请使用此方法。

仅当实现 IBackgroundCopyServerCertificateValidationCallback 接口时,才调用此方法。

当应用程序终止时,验证接口将变为无效;BITS 不维护验证接口的记录。 因此,应用程序的初始化过程应针对要接收证书验证请求的现有作业调用 SetServerCertificateValidationInterface

如果多个应用程序调用 SetServerCertificateValidationInterface 来设置作业的通知接口,则最后一个要调用的应用程序是接收通知的应用程序。 其他应用程序不会收到通知。

如果在证书的 OS 验证过程中发现任何证书错误,则连接已中止,并且永远不会调用自定义回调。 可以使用调用 IBackgroundCopyJobHttpOptions::SetSecurityFlags来自定义 OS 验证逻辑。 例如,可以忽略预期的证书验证错误。

如果 OS 验证通过,则在完成 TLS 握手之前以及发送 HTTP 请求之前调用 IBackgroundCopyServerCertificateValidationCallback::ValidateServerCertificate 方法。

如果验证方法拒绝证书,则作业将转换为具有 BG_ERROR_CONTEXT_SERVER_CERTIFICATE_CALLBACK 作业错误上下文的 BG_JOB_STATE_TRANSIENT_ERROR,并从回调 HRESULT。 如果无法调用回调(例如,因为程序退出后需要 BITS 来验证服务器证书),则作业错误代码将 BG_E_SERVER_CERT_VALIDATION_INTERFACE_REQUIRED。 下次运行应用程序时,可以通过再次设置验证回调并恢复作业来修复此错误。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1809 [仅限桌面应用]
支持的最低服务器 Windows Server 2016 [仅限桌面应用]
标头 bits10_3.h (包括 Bits.h)
Bits.lib
DLL Bits.dll

另请参阅

IBackgroundCopyServerCertificateValidationCallback