Función CertAddCertificateLinkToStore (wincrypt.h)

La función CertAddCertificateLinkToStore agrega un vínculo en un almacén de certificados a un contexto de certificado en otro almacén. En lugar de crear y agregar un duplicado del contexto del certificado, esta función agrega un vínculo al certificado original.

Sintaxis

BOOL CertAddCertificateLinkToStore(
  [in]            HCERTSTORE     hCertStore,
  [in]            PCCERT_CONTEXT pCertContext,
  [in]            DWORD          dwAddDisposition,
  [out, optional] PCCERT_CONTEXT *ppStoreContext
);

Parámetros

[in] hCertStore

Identificador del almacén de certificados donde se va a agregar el vínculo.

[in] pCertContext

Puntero a la estructura CERT_CONTEXT que se va a vincular.

[in] dwAddDisposition

Especifica la acción si ya existe un certificado coincidente o un vínculo a un certificado coincidente en el almacén. Los valores de disposición definidos actualmente y sus usos son los siguientes.

Valor Significado
CERT_STORE_ADD_ALWAYS
La función no realiza ninguna comprobación de un certificado coincidente existente o un vínculo a un certificado coincidente. Siempre se agrega un nuevo certificado al almacén. Esto puede provocar duplicados en un almacén.
CERT_STORE_ADD_NEW
Si existe un certificado coincidente o un vínculo a un certificado coincidente, se produce un error en la operación. GetLastError devuelve el código CRYPT_E_EXISTS.
CERT_STORE_ADD_REPLACE_EXISTING
Si existe un vínculo a un certificado coincidente, ese vínculo existente se elimina y se crea un nuevo vínculo y se agrega al almacén. Si no existe ningún certificado o vínculo coincidente con un certificado coincidente, se agrega uno.
CERT_STORE_ADD_USE_EXISTING
Si existe un certificado coincidente o un vínculo a un certificado coincidente, se usa el certificado existente. No se produce un error en la función, pero no se agrega ningún vínculo nuevo. Si no existe ningún certificado o vínculo coincidente con un certificado coincidente, se agrega un nuevo vínculo.

[out, optional] ppStoreContext

Puntero a un puntero a una copia del vínculo creado. El parámetro ppStoreContext puede ser NULL para indicar que no se necesita una copia del vínculo. Si se crea una copia del vínculo, esa copia debe liberarse mediante la función CertFreeCertificateContext .

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es TRUE.

Si se produce un error en la función, el valor devuelto es FALSE. Para obtener información de error extendida, llame a GetLastError. A continuación se indican algunos códigos de error posibles.

Código devuelto Descripción
CRYPT_E_EXISTS
Para un parámetro dwAddDisposition de CERT_STORE_ADD_NEW, el certificado ya existe en el almacén.
E_INVALIDARG
Se especificó un valor de disposición que no es válido en el parámetro dwAddDisposition .

Comentarios

Dado que el vínculo proporciona acceso al contexto de certificado original, al establecer una propiedad extendida en el contexto del certificado vinculado cambia esa propiedad extendida en la ubicación original del certificado y en cualquier otro vínculo a ese certificado.

No se pueden agregar vínculos a un almacén abierto como una colección. Las tiendas abiertas como colecciones incluyen todas las tiendas abiertas con CertOpenSystemStore o CertOpenStore mediante CERT_STORE_PROV_SYSTEM o CERT_STORE_PROV_COLLECTION. Para obtener más información, vea CertAddStoreToCollection.

Si se usan vínculos y se llama a CertCloseStore con CERT_CLOSE_STORE_FORCE_FLAG, el almacén que usa vínculos debe cerrarse antes de que se cierre el almacén que contiene los contextos originales. Si no se usa CERT_CLOSE_STORE_FORCE_FLAG, las dos tiendas se pueden cerrar en cualquier orden.

Para quitar el vínculo de contexto de certificado del almacén de certificados, use la función CertDeleteCertificateFromStore .

Ejemplos

Para obtener un ejemplo que usa esta función, vea Programa C de ejemplo: Operaciones del almacén de certificados. Para obtener código adicional que usa esta función, vea Programa C de ejemplo: Operaciones de almacén de certificados del mismo nivel y recopilación.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

CertAddCRLLinkToStore

CertAddCTLLinkToStore

CertAddStoreToCollection

CertCloseStore

CertFreeCertificateContext

CertOpenStore

CertOpenSystemStore

Funciones de certificado