Funzione CertAddCertificateLinkToStore (wincrypt.h)

La funzione CertAddCertificateLinkToStore aggiunge un collegamento in un archivio certificati a un contesto di certificato in un archivio diverso. Anziché creare e aggiungere un duplicato del contesto del certificato, questa funzione aggiunge un collegamento al certificato originale.

Sintassi

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

Parametri

[in] hCertStore

Handle dell'archivio certificati in cui deve essere aggiunto il collegamento.

[in] pCertContext

Puntatore alla struttura CERT_CONTEXT da collegare.

[in] dwAddDisposition

Specifica l'azione se esiste già un certificato corrispondente o un collegamento a un certificato corrispondente nell'archivio. I valori di eliminazione attualmente definiti e i relativi usi sono i seguenti.

Valore Significato
CERT_STORE_ADD_ALWAYS
La funzione non verifica la presenza di un certificato corrispondente esistente o di un collegamento a un certificato corrispondente. Un nuovo certificato viene sempre aggiunto all'archivio. Ciò può causare duplicati in un archivio.
CERT_STORE_ADD_NEW
Se esiste un certificato corrispondente o un collegamento a un certificato corrispondente, l'operazione ha esito negativo. GetLastError restituisce il codice di CRYPT_E_EXISTS.
CERT_STORE_ADD_REPLACE_EXISTING
Se esiste un collegamento a un certificato corrispondente, il collegamento esistente viene eliminato e viene creato un nuovo collegamento all'archivio. Se non esiste alcun certificato o collegamento corrispondente a un certificato corrispondente, ne viene aggiunto uno.
CERT_STORE_ADD_USE_EXISTING
Se esiste un certificato corrispondente o un collegamento a un certificato corrispondente, viene usato il certificato esistente. La funzione non riesce, ma non viene aggiunto alcun nuovo collegamento. Se non esiste alcun certificato o collegamento corrispondente a un certificato corrispondente, viene aggiunto un nuovo collegamento.

[out, optional] ppStoreContext

Puntatore a un puntatore a una copia del collegamento creato. Il parametro ppStoreContext può essere NULL per indicare che non è necessaria una copia del collegamento. Se viene creata una copia del collegamento, tale copia deve essere liberata usando la funzione CertFreeCertificateContext .

Valore restituito

Se la funzione ha esito positivo, il valore restituito è TRUE.

Se la funzione ha esito negativo, il valore restituito è FALSE. Per informazioni sull'errore estese, chiamare GetLastError. Alcuni codici di errore possibili seguono.

Codice restituito Descrizione
CRYPT_E_EXISTS
Per un parametro dwAddDisposition di CERT_STORE_ADD_NEW, il certificato esiste già nell'archivio.
E_INVALIDARG
Valore di eliminazione non valido specificato nel parametro dwAddDisposition .

Commenti

Poiché il collegamento fornisce l'accesso al contesto del certificato originale, impostando una proprietà estesa nel contesto del certificato collegato cambia la proprietà estesa nel percorso originale del certificato e in tutti gli altri collegamenti a tale certificato.

I collegamenti non possono essere aggiunti a un archivio aperto come raccolta. Gli archivi aperti come raccolte includono tutti gli archivi aperti con CertOpenSystemStore o CertOpenStore usando CERT_STORE_PROV_SYSTEM o CERT_STORE_PROV_COLLECTION. Per altre informazioni, vedere CertAddStoreToCollection.

Se i collegamenti vengono usati e CertCloseStore viene chiamato con CERT_CLOSE_STORE_FORCE_FLAG, l'archivio che usa i collegamenti deve essere chiuso prima che l'archivio che contenga i contesti originali venga chiuso. Se CERT_CLOSE_STORE_FORCE_FLAG non viene usato, i due archivi possono essere chiusi in entrambi gli ordini.

Per rimuovere il collegamento al contesto del certificato dall'archivio certificati, usare la funzione CertDeleteCertificateFromStore .

Esempio

Per un esempio che usa questa funzione, vedere Esempio di programma C: Operazioni dell'archivio certificati. Per un codice aggiuntivo che usa questa funzione, vedere Esempio di programma C: raccolta e operazioni dell'archivio certificati di pari livello.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

CertAddCRLLinkToStore

CertAddCTLLinkToStore

CertAddStoreToCollection

CertCloseStore

CertFreeCertificateContext

CertOpenStore

CertOpenSystemStore

Funzioni per i certificati