Funzione CertAddCTLLinkToStore (wincrypt.h)
La funzione CertAddCTLLinkToStore aggiunge un collegamento in un archivio a un contesto CTL (Certificate Trust List) in un archivio diverso. Anziché creare e aggiungere un duplicato di un contesto CTL, questa funzione aggiunge un collegamento al contesto CTL originale.
Sintassi
BOOL CertAddCTLLinkToStore(
[in] HCERTSTORE hCertStore,
[in] PCCTL_CONTEXT pCtlContext,
[in] DWORD dwAddDisposition,
[out, optional] PCCTL_CONTEXT *ppStoreContext
);
Parametri
[in] hCertStore
Handle dell'archivio certificati in cui deve essere aggiunto il collegamento.
[in] pCtlContext
Puntatore alla struttura CTL_CONTEXT da collegare.
[in] dwAddDisposition
Specifica l'azione da eseguire se esiste già un CTL corrispondente o un collegamento a un CTL corrispondente. I valori di eliminazione attualmente definiti e i relativi usi sono i seguenti.
Valore | Significato |
---|---|
|
Non verifica la presenza di un CTL corrispondente o un collegamento a un CTL corrispondente. Un nuovo CTL viene sempre aggiunto all'archivio. Ciò può causare duplicati in un archivio. |
|
Se esiste un CTL corrispondente o un collegamento a un CTL corrispondente, l'operazione ha esito negativo. GetLastError restituisce il codice di CRYPT_E_EXISTS. |
|
Se esiste un CTL corrispondente o un collegamento a un CTL corrispondente, vengono confrontati i tempi di ThisUpdate nelle dll. Se il CTL esistente ha un tempo di ThisUpdate minore del tempo ThisUpdate sul nuovo CTL, il vecchio CTL o il collegamento viene sostituito esattamente come con CERT_STORE_ADD_REPLACE_EXISTING. Se il CTL esistente ha un tempo di ThisUpdate maggiore o uguale all'ora di ThisUpdate nel CTL da aggiungere, la funzione ha esito negativo con GetLastError che restituisce il codice CRYPT_E_EXISTS.
Se un CTL corrispondente o un collegamento a un CTL corrispondente non viene trovato nell'archivio, viene aggiunto un nuovo CTL all'archivio. |
|
L'azione è uguale a per CERT_STORE_ADD_NEWER, ad eccezione del fatto che se un CTL precedente viene sostituito, le proprietà del CTL precedente vengono incorporate nel CTL sostitutivo. |
|
Se esiste un CTL corrispondente o un collegamento a un CTL corrispondente, il collegamento o CTL esistente viene eliminato e viene creato e aggiunto un nuovo CTL all'archivio. Se non esiste un collegamento CTL corrispondente o un collegamento a un CTL corrispondente, ne viene aggiunto uno. |
|
Se esiste un CTL corrispondente nell'archivio, tale contesto esistente viene eliminato prima di creare e aggiungere il nuovo contesto. Il contesto aggiunto eredita le proprietà dal CTL esistente. |
|
Se esiste un CTL corrispondente o un collegamento a un CTL corrispondente, vengono aggiunte le proprietà ETL esistenti dal nuovo CTL. La funzione non riesce, ma non viene aggiunto alcun nuovo CTL. Se ppCertContext non è NULL, il contesto esistente viene duplicato.
Se non esiste un collegamento CTL corrispondente o un collegamento a un CTL corrispondente, viene aggiunto un nuovo CTL. |
[out, optional] ppStoreContext
Puntatore a un puntatore a una copia del collegamento creato. 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 CertFreeCTLContext.
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 |
---|---|
|
Per un dwAddDisposition di CERT_STORE_ADD_NEW, il CTL esiste già nell'archivio. |
|
L'eliminazione aggiunta specificata dal parametro dwAddDisposition non è valida. |
Commenti
Poiché il collegamento fornisce l'accesso al contesto CTL originale, impostando una proprietà estesa nel contesto CTL collegato cambia la proprietà estesa nella posizione del CTL originale e in tutti gli altri collegamenti a tale CTL.
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. Vedere anche CertAddStoreToCollection.
Quando vengono usati collegamenti e CertCloseStore viene chiamato con CERT_CLOSE_STORE_FORCE_FLAG, l'archivio che usa i collegamenti deve essere chiuso prima che l'archivio contenente 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 CTL dall'archivio certificati, usare la funzione CertDeleteCTLFromStore .
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 |