Compartilhar via


Função CertAddCertificateLinkToStore (wincrypt.h)

A função CertAddCertificateLinkToStore adiciona um link em um repositório de certificados a um contexto de certificado em um repositório diferente. Em vez de criar e adicionar uma duplicata do contexto do certificado, essa função adiciona um link ao certificado original.

Sintaxe

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

Parâmetros

[in] hCertStore

Um identificador para o repositório de certificados em que o link deve ser adicionado.

[in] pCertContext

Um ponteiro para a estrutura CERT_CONTEXT a ser vinculada.

[in] dwAddDisposition

Especifica a ação se um certificado correspondente ou um link para um certificado correspondente já existir no repositório. Os valores de disposição definidos no momento e seus usos são os seguintes.

Valor Significado
CERT_STORE_ADD_ALWAYS
A função não faz marcar para um certificado correspondente existente ou um link para um certificado correspondente. Um novo certificado sempre é adicionado ao repositório. Isso pode levar a duplicatas em um repositório.
CERT_STORE_ADD_NEW
Se existir um certificado correspondente ou um link para um certificado correspondente, a operação falhará. GetLastError retorna o código CRYPT_E_EXISTS.
CERT_STORE_ADD_REPLACE_EXISTING
Se existir um link para um certificado correspondente, esse link existente será excluído e um novo link será criado e adicionado ao repositório. Se não houver nenhum certificado ou link correspondente para um certificado correspondente, um será adicionado.
CERT_STORE_ADD_USE_EXISTING
Se existir um certificado correspondente ou um link para um certificado correspondente, o certificado existente será usado. A função não falha, mas nenhum novo link é adicionado. Se não houver nenhum certificado ou link correspondente para um certificado correspondente, um novo link será adicionado.

[out, optional] ppStoreContext

Um ponteiro para um ponteiro para uma cópia do link criado. O parâmetro ppStoreContext pode ser NULL para indicar que uma cópia do link não é necessária. Se uma cópia do link for criada, essa cópia deverá ser liberada usando a função CertFreeCertificateContext .

Retornar valor

Se a função for bem-sucedida, o valor retornado será TRUE.

Se a função falhar, o valor retornado será FALSE. Para obter informações de erro estendidas, chame GetLastError. Alguns códigos de erro possíveis seguem.

Código de retorno Descrição
CRYPT_E_EXISTS
Para um parâmetro dwAddDisposition de CERT_STORE_ADD_NEW, o certificado já existe no repositório.
E_INVALIDARG
Um valor de disposição que não é válido foi especificado no parâmetro dwAddDisposition .

Comentários

Como o link fornece acesso ao contexto de certificado original, definir uma propriedade estendida no contexto do certificado vinculado altera essa propriedade estendida no local original do certificado e em quaisquer outros links para esse certificado.

Os links não podem ser adicionados a um repositório aberto como uma coleção. As lojas abertas como coleções incluem todas as lojas abertas com CertOpenSystemStore ou CertOpenStore usando CERT_STORE_PROV_SYSTEM ou CERT_STORE_PROV_COLLECTION. Para obter mais informações, consulte CertAddStoreToCollection.

Se os links forem usados e CertCloseStore for chamado com CERT_CLOSE_STORE_FORCE_FLAG, o repositório que usa links deverá ser fechado antes que o repositório que contém os contextos originais seja fechado. Se CERT_CLOSE_STORE_FORCE_FLAG não for usado, os dois repositórios poderão ser fechados em qualquer ordem.

Para remover o link de contexto do certificado do repositório de certificados, use a função CertDeleteCertificateFromStore .

Exemplos

Para obter um exemplo que usa essa função, consulte Exemplo de programa C: operações de repositório de certificados. Para obter código adicional que usa essa função, consulte Exemplo de programa C: operações de repositório de certificados irmãos e coleção.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira também

CertAddCRLLinkToStore

CertAddCTLLinkToStore

CertAddStoreToCollection

CertCloseStore

CertFreeCertificateContext

Certopenstore

CertOpenSystemStore

Funções de certificado