Funzione CertEnumCertificatesInStore (wincrypt.h)
La funzione CertEnumCertificatesInStore recupera il primo o il certificato successivo in un archivio certificati. Usata in un ciclo, questa funzione può recuperare in sequenza tutti i certificati in un archivio certificati.
Sintassi
PCCERT_CONTEXT CertEnumCertificatesInStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pPrevCertContext
);
Parametri
[in] hCertStore
Handle di un archivio certificati.
[in] pPrevCertContext
Puntatore al CERT_CONTEXT del contesto del certificato precedente trovato.
Questo parametro deve essere NULL per iniziare l'enumerazione e ottenere il primo certificato nell'archivio. I certificati successivi vengono enumerati impostando pPrevCertContext sul puntatore restituito da una chiamata precedente alla funzione. Questa funzione libera il CERT_CONTEXT a cui fa riferimento i valori non NULL di questo parametro.
Per gli archivi logici, inclusi gli archivi di raccolta, non è possibile usare un duplicato di pCertContext restituito da questa funzione per avviare una nuova sottosequenza di enumerazioni perché il certificato duplicato perde lo stato di enumerazione iniziale. L'enumerazione ignora tutti i certificati eliminati in precedenza da CertDeleteCertificateFromStore.
Valore restituito
Se la funzione ha esito positivo, la funzione restituisce un puntatore al CERT_CONTEXT successivo nell'archivio. Se non sono presenti altri certificati nell'archivio, la funzione restituisce NULL.
Per informazioni sugli errori estesi, chiamare GetLastError. Di seguito sono riportati alcuni possibili codici di errore.
Valore | Descrizione |
---|---|
|
L'handle nel parametro hCertStore non corrisponde a quello nel contesto del certificato a cui punta pPrevCertContext. |
|
Non sono stati trovati certificati. Ciò si verifica se l'archivio è vuoto o se la funzione ha raggiunto la fine dell'elenco dello store. |
|
Si applica agli archivi esterni. Non sono stati trovati certificati. Ciò si verifica se l'archivio è vuoto o se la funzione ha raggiunto la fine dell'elenco dello store. |
Commenti
Il puntatore restituito viene liberato quando viene passato come parametro pPrevCertContext in una chiamata successiva. In caso contrario, il puntatore deve essere liberato chiamando CertFreeCertificateContext. Un valore pPrevCertContext non NULL passato a CertEnumCertificatesInStore viene sempre liberato anche per un errore.
È possibile creare un duplicato del certificato attualmente enumerato chiamando CertDuplicateCertificateContext.
Esempio
Nell'esempio seguente sono elencati i contesti del certificato nell'archivio certificati. Per un altro esempio che usa questa funzione, vedere Esempio di programma C: eliminazione di certificati da un archivio certificati.
#include <windows.h>
#include <stdio.h>
#include <Wincrypt.h>
#pragma comment(lib, "crypt32.lib")
//--------------------------------------------------------------------
// Declare and initialize variables.
HANDLE hStoreHandle = NULL;
PCCERT_CONTEXT pCertContext = NULL;
char * pszStoreName = "CA";
//--------------------------------------------------------------------
// Open a system certificate store.
if (hStoreHandle = CertOpenSystemStore(
NULL,
pszStoreName))
{
printf("The %s store has been opened. \n", pszStoreName);
}
else
{
printf("The store was not opened.\n");
exit(1);
}
//-------------------------------------------------------------------
// Find the certificates in the system store.
while(pCertContext= CertEnumCertificatesInStore(
hStoreHandle,
pCertContext)) // on the first call to the function,
// this parameter is NULL
// on all subsequent calls,
// this parameter is the last pointer
// returned by the function
{
//----------------------------------------------------------------
// Do whatever is needed for a current certificate.
// ...
} // End of while.
//--------------------------------------------------------------------
// Clean up.
if (!CertCloseStore(
hStoreHandle,
0))
{
printf("Failed CertCloseStore\n");
exit(1);
}
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
CertDeleteCertificateFromStore
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per