CertAddCertificateLinkToStore 函数 (wincrypt.h)
CertAddCertificateLinkToStore 函数将证书存储中的链接添加到其他存储中的证书上下文。 此函数添加指向原始证书的链接,而不是创建和添加证书上下文的副本。
语法
BOOL CertAddCertificateLinkToStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pCertContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCERT_CONTEXT *ppStoreContext
);
参数
[in] hCertStore
要在其中添加链接的 证书存储 的句柄。
[in] pCertContext
指向要链接 的CERT_CONTEXT 结构的指针。
[in] dwAddDisposition
指定如果存储中已存在匹配证书或指向匹配证书的链接,则指定操作。 当前定义的处置值及其用途如下所示。
值 | 含义 |
---|---|
|
函数不会对现有匹配证书或指向匹配证书的链接检查。 始终将新证书添加到存储中。 这可能会导致存储中出现重复项。 |
|
如果存在匹配的证书或指向匹配证书的链接,则操作将失败。 GetLastError 返回CRYPT_E_EXISTS代码。 |
|
如果存在指向匹配证书的链接,则会删除该现有链接,并创建一个新链接并将其添加到存储。 如果不存在匹配的证书或指向匹配证书的链接,则会添加一个。 |
|
如果存在匹配的证书或指向匹配证书的链接,则使用现有证书。 函数不会失败,但未添加新链接。 如果没有匹配的证书或指向匹配证书的链接,则会添加新链接。 |
[out, optional] ppStoreContext
指向指向所创建链接副本的指针的指针。 ppStoreContext 参数可以为 NULL,以指示不需要链接的副本。 如果创建了链接的副本,则必须使用 CertFreeCertificateContext 函数释放该副本。
返回值
如果函数成功,则返回值为 TRUE。
如果函数失败,则返回值为 FALSE。 有关扩展的错误信息,请调用 GetLastError。 一些可能的错误代码随之而来。
返回代码 | 说明 |
---|---|
|
对于 CERT_STORE_ADD_NEW 的 dwAddDisposition 参数,证书已存在于存储中。 |
|
dwAddDisposition 参数中指定了无效的处置值。 |
注解
由于链接提供对原始证书 上下文的访问权限,因此在链接 证书上下文 中设置扩展属性会更改证书原始位置以及该证书的任何其他链接中的扩展属性。
链接不能添加到作为集合打开的存储区。 作为集合打开的存储包括使用 CertOpenSystemStore 或 CertOpenStore 使用 CERT_STORE_PROV_SYSTEM 或 CERT_STORE_PROV_COLLECTION 打开的所有存储。 有关详细信息,请参阅 CertAddStoreToCollection。
如果使用链接并且使用 CERT_CLOSE_STORE_FORCE_FLAG 调用 CertCloseStore ,则必须关闭使用链接的存储,然后才能关闭包含原始上下文的存储。 如果未使用CERT_CLOSE_STORE_FORCE_FLAG,则可以按任一顺序关闭这两个商店。
若要从证书存储中删除证书上下文链接,请使用 CertDeleteCertificateFromStore 函数。
示例
有关使用此函数的示例,请参阅 示例 C 程序:证书存储操作。 有关使用此函数的其他代码,请参阅 示例 C 程序:集合和同级证书存储操作。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |