Función CertAddCTLLinkToStore (wincrypt.h)
La función CertAddCTLLinkToStore agrega un vínculo en un almacén a un contexto de lista de confianza de certificados (CTL) en un almacén diferente. En lugar de crear y agregar un duplicado de un contexto de CTL, esta función agrega un vínculo al contexto CTL original.
Sintaxis
BOOL CertAddCTLLinkToStore(
[in] HCERTSTORE hCertStore,
[in] PCCTL_CONTEXT pCtlContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCTL_CONTEXT *ppStoreContext
);
Parámetros
[in] hCertStore
Identificador del almacén de certificados donde se va a agregar el vínculo.
[in] pCtlContext
Puntero a la estructura CTL_CONTEXT que se va a vincular.
[in] dwAddDisposition
Especifica la acción que se debe realizar si ya existe un CTL coincidente o un vínculo a un CTL coincidente en el almacén. Los valores de disposición definidos actualmente y sus usos son los siguientes.
Valor | Significado |
---|---|
|
No realiza ninguna comprobación de un CTL coincidente existente o un vínculo a un CTL coincidente. Siempre se agrega un nuevo CTL al almacén. Esto puede provocar duplicados en un almacén. |
|
Si existe un CTL coincidente o un vínculo a un CTL coincidente, se produce un error en la operación. GetLastError devuelve el código CRYPT_E_EXISTS. |
|
Si existe un CTL coincidente o un vínculo a un CTL coincidente, se comparan las horas ThisUpdate de las CTL. Si el CTL existente tiene un valor ThisUpdate menor que la hora ThisUpdate en el nuevo CTL, el CTL o vínculo antiguo se reemplaza igual que por CERT_STORE_ADD_REPLACE_EXISTING. Si el CTL existente tiene un tiempo ThisUpdate mayor o igual que la hora ThisUpdate en el CTL que se va a agregar, se produce un error en la función getLastError que devuelve el código de CRYPT_E_EXISTS.
Si no se encuentra un CTL coincidente o un vínculo a un CTL coincidente en el almacén, se agrega un nuevo CTL al almacén. |
|
La acción es la misma que para CERT_STORE_ADD_NEWER, salvo que si se reemplaza un CTL anterior, las propiedades del CTL anterior se incorporan al CTL de reemplazo. |
|
Si existe un CTL coincidente o un vínculo a un CTL coincidente, se elimina el CTL o vínculo existente y se crea un nuevo CTL y se agrega al almacén. Si no existe un CTL coincidente o un vínculo a un CTL coincidente, se agrega uno. |
|
Si existe un CTL coincidente en el almacén, ese contexto existente se elimina antes de crear y agregar el nuevo contexto. El contexto agregado hereda las propiedades del CTL existente. |
|
Si existe un CTL coincidente o un vínculo a un CTL coincidente, se usa ese CTL existente y se agregan las propiedades del nuevo CTL. No se produce un error en la función, pero no se agrega ningún CTL nuevo. Si ppCertContext no es NULL, se duplica el contexto existente.
Si no existe un CTL coincidente o un vínculo a un CTL coincidente, se agrega un nuevo CTL. |
[out, optional] ppStoreContext
Puntero a un puntero a una copia del vínculo creado. 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 CertFreeCTLContext.
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 |
---|---|
|
Para dwAddDisposition de CERT_STORE_ADD_NEW, el CTL ya existe en el almacén. |
|
La disposición de adición especificada por el parámetro dwAddDisposition no es válida. |
Comentarios
Dado que el vínculo proporciona acceso al contexto de CTL original, al establecer una propiedad extendida en el contexto de CTL vinculado cambia esa propiedad extendida en la ubicación del CTL original y en cualquier otro vínculo a ese CTL.
No se pueden agregar vínculos a un almacén que se abre 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. Consulte también CertAddStoreToCollection.
Cuando 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 CTL del almacén de certificados, use la función CertDeleteCTLFromStore .
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 |