Функция 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. Ниже приведены некоторые возможные коды ошибок.
Код возврата | Описание |
---|---|
|
Для параметра dwAddDisposition CERT_STORE_ADD_NEW сертификат уже существует в хранилище. |
|
Недопустимое значение перед ликвидацией было указано в параметре 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 |