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 |
---|---|
|
Le handle du paramètre hCertStore |
|
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. |
|
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-
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
CertDeleteCertificateFromStore