Partager via


Fonction CertEnumCertificatesInStore (wincrypt.h)

La fonction CertEnumCertificatesInStore récupère le premier ou le certificat suivant dans un magasin de certificats . Utilisée dans une boucle, cette fonction peut récupérer en séquence tous les certificats d’un magasin de certificats.

Syntaxe

PCCERT_CONTEXT CertEnumCertificatesInStore(
  [in] HCERTSTORE     hCertStore,
  [in] PCCERT_CONTEXT pPrevCertContext
);

Paramètres

[in] hCertStore

Handle d’un magasin de certificats .

[in] pPrevCertContext

Pointeur vers la CERT_CONTEXT du contexte de certificat précédent trouvé.

Ce paramètre doit être NULL pour commencer l’énumération et obtenir le premier certificat dans le magasin. Les certificats successifs sont énumérés en définissant pPrevCertContext au pointeur retourné par un appel précédent à la fonction. Cette fonction libère les CERT_CONTEXT référencées par des valeurs null nonNULL de ce paramètre.

Pour magasins logiques, y compris les magasins de collection, un doublon du pCertContext retourné par cette fonction ne peut pas être utilisé pour commencer une nouvelle sous-séquence d’énumérations, car le certificat dupliqué perd l’énumération initiale 'état. L’énumération ignore tout certificat précédemment supprimé par CertDeleteCertificateFromStore.

Valeur de retour

Si la fonction réussit, la fonction retourne un pointeur vers la CERT_CONTEXT suivante dans le magasin. Si aucun autre certificat n’existe dans le magasin, la fonction retourne NULL.

Pour obtenir des informations d’erreur étendues, appelez GetLastError. Certains codes d’erreur possibles suivent.

Valeur Description
E_INVALIDARG
Le handle du paramètre hCertStore n’est pas le même que dans le contexte de certificat pointé par pPrevCertContext.
CRYPT_E_NOT_FOUND
Aucun certificat n’a été trouvé. Cela se produit si le magasin est vide ou si la fonction a atteint la fin de la liste du magasin.
ERROR_NO_MORE_FILES
S’applique aux magasins externes. Aucun certificat n’a été trouvé. Cela se produit si le magasin est vide ou si la fonction a atteint la fin de la liste du magasin.

Remarques

Le pointeur retourné est libéré lorsqu’il est passé en tant que paramètre pPrevCertContext lors d’un appel suivant. Sinon, le pointeur doit être libéré en appelant CertFreeCertificateContext. Une non-NULLpPrevCertContext passée à CertEnumCertificatesInStore est toujours libérée même pour une erreur.

Un doublon du certificat actuellement énuméré peut être effectué en appelant CertDuplicateCertificateContext.

Exemples

L’exemple suivant répertorie les contextes de certificat dans le magasin de certificats. Pour obtenir un autre exemple qui utilise cette fonction, consultez Exemple de programme C : suppression de certificats à partir d’un magasin de certificats.

#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);
}

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2003 [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête wincrypt.h
bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

CERT_CONTEXT

CertDeleteCertificateFromStore

CertDuplicateCertificateContext

CertFindCRLInStore

CertFindCTLInStore

CertFindCertificateInStore

CertFreeCertificateContext

fonctions de certificat