Fungsi CertEnumCertificatesInStore (wincrypt.h)
Fungsi CertEnumCertificatesInStore
Sintaksis
PCCERT_CONTEXT CertEnumCertificatesInStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pPrevCertContext
);
Parameter
[in] hCertStore
Handel penyimpanan sertifikat .
[in] pPrevCertContext
Penunjuk ke CERT_CONTEXT konteks sertifikat sebelumnya ditemukan.
Parameter ini harus NULL untuk memulai enumerasi dan mendapatkan sertifikat pertama di penyimpanan. Sertifikat berturut-turut dijumlahkan dengan mengatur pPrevCertContext ke pointer yang dikembalikan oleh panggilan sebelumnya ke fungsi. Fungsi ini membebaskan
Untuk penyimpanan logis , termasuk penyimpanan koleksi, duplikat pCertContext yang dikembalikan oleh fungsi ini tidak dapat digunakan untuk memulai berikutnya enumerasi baru karena sertifikat duplikat kehilangan enumerasi awal status. Enumerasi melewati sertifikat apa pun yang sebelumnya dihapus oleh CertDeleteCertificateFromStore.
Mengembalikan nilai
Jika fungsi berhasil, fungsi mengembalikan penunjuk ke CERT_CONTEXT berikutnya di penyimpanan. Jika tidak ada lagi sertifikat di penyimpanan, fungsi mengembalikan NULL.
Untuk informasi kesalahan yang diperluas, panggil GetLastError. Beberapa kemungkinan kode kesalahan mengikuti.
Nilai | Deskripsi |
---|---|
|
Handel dalam parameter hCertStore |
|
Tidak ada sertifikat yang ditemukan. Ini terjadi jika penyimpanan kosong atau jika fungsi mencapai akhir daftar penyimpanan. |
|
Berlaku untuk penyimpanan eksternal. Tidak ada sertifikat yang ditemukan. Ini terjadi jika penyimpanan kosong atau jika fungsi mencapai akhir daftar penyimpanan. |
Komentar
Pointer yang dikembalikan dibebaskan saat diteruskan sebagai parameter pPrevCertContext pada panggilan berikutnya. Jika tidak, pointer harus dibebaskan dengan memanggil CertFreeCertificateContext. non-
Duplikat sertifikat yang saat ini dijumlahkan dapat dilakukan dengan memanggil CertDuplicateCertificateContext.
Contoh
Contoh berikut mencantumkan konteks sertifikat di penyimpanan sertifikat. Untuk contoh lain yang menggunakan fungsi ini, lihat Contoh Program C: Menghapus Sertifikat dari Penyimpanan Sertifikat.
#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);
}
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
server minimum yang didukung |
Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Platform Target |
Windows |
Header |
wincrypt.h |
Pustaka |
Crypt32.lib |
DLL |
Crypt32.dll |
Lihat juga
CertDeleteCertificateFromStore
CertDuplicateCertificateContext
Fungsi Sertifikat