Fonction CertEnumCertificatesInStore (wincrypt.h)
La fonction CertEnumCertificatesInStore récupère le premier ou le prochain certificat dans un magasin de certificats. Utilisée dans une boucle, cette fonction peut récupérer dans l’ordre 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 le 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 sur le pointeur retourné par un appel précédent à la fonction. Cette fonction libère les CERT_CONTEXT référencées par des valeurs non NULL de ce paramètre.
Pour les magasins logiques, y compris les magasins de collections, 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’état d’énumération initial. L’énumération ignore tout certificat précédemment supprimé par CertDeleteCertificateFromStore.
Valeur retournée
Si la fonction réussit, la fonction retourne un pointeur vers le CERT_CONTEXT suivant dans le magasin. S’il n’existe plus de certificats 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 dans le paramètre hCertStore n’est pas le même que dans le contexte de certificat pointé par pPrevCertContext. |
|
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. Un pPrevCertContext non NULL passé à CertEnumCertificatesInStore est toujours libéré, même en cas d’erreur.
Vous pouvez effectuer un doublon du certificat actuellement énuméré 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 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);
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau | applications UWP] |
Plateforme cible | Windows |
En-tête | wincrypt.h |
Bibliothèque | Crypt32.lib |
DLL | Crypt32.dll |
Voir aussi
CertDeleteCertificateFromStore
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour