Функция 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

Указывает действие, если соответствующий сертификат или ссылка на соответствующий сертификат уже существует в хранилище. В настоящее время определенные значения перед ликвидацией и их использование приведены ниже.

Значение Значение
CERT_STORE_ADD_ALWAYS
Функция не проверка для существующего соответствующего сертификата или ссылки на соответствующий сертификат. Новый сертификат всегда добавляется в хранилище. Это может привести к дублированию в хранилище.
CERT_STORE_ADD_NEW
Если соответствующий сертификат или ссылка на соответствующий сертификат существует, операция завершается ошибкой. GetLastError возвращает код CRYPT_E_EXISTS.
CERT_STORE_ADD_REPLACE_EXISTING
Если ссылка на соответствующий сертификат существует, она удаляется, а новая ссылка создается и добавляется в хранилище. Если соответствующий сертификат или ссылка на соответствующий сертификат не существует, он добавляется.
CERT_STORE_ADD_USE_EXISTING
Если соответствующий сертификат или ссылка на соответствующий сертификат существует, используется существующий сертификат. Функция не завершается ошибкой, но новая ссылка не добавляется. Если соответствующий сертификат или ссылка на соответствующий сертификат не существует, добавляется новая ссылка.

[out, optional] ppStoreContext

Указатель на указатель на копию созданной ссылки. Параметр ppStoreContext может иметь значение NULL , чтобы указать, что копия ссылки не требуется. Если создается копия ссылки, ее необходимо освободить с помощью функции CertFreeCertificateContext .

Возвращаемое значение

Если функция выполнена успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE. Для получения дополнительных сведений об ошибке вызовите Метод GetLastError. Ниже приведены некоторые возможные коды ошибок.

Код возврата Описание
CRYPT_E_EXISTS
Для параметра dwAddDisposition CERT_STORE_ADD_NEW сертификат уже существует в хранилище.
E_INVALIDARG
Недопустимое значение перед ликвидацией было указано в параметре dwAddDisposition .

Комментарии

Так как ссылка предоставляет доступ к исходному контексту сертификата, установка расширенного свойства в контексте связанного сертификата изменяет это расширенное свойство в исходном расположении сертификата и в любых других ссылках на этот сертификат.

Ссылки нельзя добавить в магазин, открытый в виде коллекции. Магазины, открытые как коллекции, включают все магазины, открытые с помощью CertOpenSystemStore или CertOpenStore с помощью CERT_STORE_PROV_SYSTEM или CERT_STORE_PROV_COLLECTION. Дополнительные сведения см. в разделе CertAddStoreToCollection.

Если используются ссылки и CertCloseStore вызывается с CERT_CLOSE_STORE_FORCE_FLAG, хранилище, использующее ссылки, должно быть закрыто до закрытия хранилища, содержащего исходные контексты. Если CERT_CLOSE_STORE_FORCE_FLAG не используется, два хранилища можно закрыть в любом порядке.

Чтобы удалить ссылку контекста сертификата из хранилища сертификатов, используйте функцию CertDeleteCertificateFromStore .

Примеры

Пример использования этой функции см. в разделе Пример программы C. Операции хранилища сертификатов. Дополнительный код, использующий эту функцию, см. в разделе Пример программы C: операции с хранилищем сертификатов и сборок и сертификатов уровня.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

CertAddCRLLinkToStore

CertAddCTLLinkToStore

CertAddStoreToCollection

CertCloseStore

CertFreeCertificateContext

CertOpenStore

CertOpenSystemStore

Функции сертификата