CertEnumCertificatesInStore-Funktion (wincrypt.h)
Die funktion CertEnumCertificatesInStore ruft das erste oder nächste Zertifikat in einem Zertifikatspeicherab. Diese Funktion kann in einer Schleife alle Zertifikate in einem Zertifikatspeicher sequenziert abrufen.
Syntax
PCCERT_CONTEXT CertEnumCertificatesInStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pPrevCertContext
);
Parameter
[in] hCertStore
Ein Handle eines Zertifikatspeichers.
[in] pPrevCertContext
Ein Zeiger auf die CERT_CONTEXT des vorherigen Zertifikatkontexts gefunden.
Dieser Parameter muss NULL- sein, um die Enumeration zu beginnen und das erste Zertifikat im Speicher abzurufen. Aufeinanderfolgende Zertifikate werden aufgezählt, indem pPrevCertContext- auf den Zeiger festgelegt wird, der von einem vorherigen Aufruf der Funktion zurückgegeben wird. Diese Funktion gibt die CERT_CONTEXT frei, auf die durch nicht-NULL- Werte dieses Parameters verwiesen wird.
Bei logischen Speicher, einschließlich Sammlungsspeichern, kann ein Duplikat des pCertContext, das von dieser Funktion zurückgegeben wird, nicht verwendet werden, um eine neue Unteranforderung von Enumerationen zu beginnen, da das duplizierte Zertifikat die ursprüngliche Enumeration Zustandverliert. Die Aufzählung überspringt alle Zertifikate, die zuvor von CertDeleteCertificateFromStoregelöscht wurden.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt die Funktion einen Zeiger auf die nächste CERT_CONTEXT im Speicher zurück. Wenn im Speicher keine weiteren Zertifikate vorhanden sind, gibt die Funktion NULL-zurück.
Rufen Sie für erweiterte Fehlerinformationen GetLastError-auf. Einige mögliche Fehlercodes folgen.
Wert | Beschreibung |
---|---|
|
Das Handle im hCertStore--Parameter entspricht nicht dem im Zertifikatkontext, auf den pPrevCertContextverweist. |
|
Es wurden keine Zertifikate gefunden. Dies geschieht, wenn der Speicher leer ist oder die Funktion das Ende der Liste des Speichers erreicht hat. |
|
Gilt für externe Speicher. Es wurden keine Zertifikate gefunden. Dies geschieht, wenn der Speicher leer ist oder die Funktion das Ende der Liste des Speichers erreicht hat. |
Bemerkungen
Der zurückgegebene Zeiger wird beim Übergeben als pPrevCertContext Parameter für einen nachfolgenden Aufruf freigegeben. Andernfalls muss der Zeiger durch Aufrufen CertFreeCertificateContextfreigegeben werden. Ein nichtNULLpPrevCertContext an CertEnumCertificatesInStore übergeben wird, wird auch für einen Fehler immer freigegeben.
Ein Duplikat des aktuell aufgezählten Zertifikats kann durch Aufrufen von CertDuplicateCertificateContexterfolgen.
Beispiele
Im folgenden Beispiel werden die Zertifikatkontexte im Zertifikatspeicher aufgelistet. Ein weiteres Beispiel, das diese Funktion verwendet, finden Sie unter Beispiel-C-Programm: Löschen von Zertifikaten aus einem Zertifikatspeicher.
#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);
}
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows XP [Desktop-Apps | UWP-Apps] |
mindestens unterstützte Server- | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform- | Fenster |
Header- | wincrypt.h |
Library | Crypt32.lib |
DLL- | Crypt32.dll |
Siehe auch
CertDeleteCertificateFromStore-