Fungsi CertEnumCertificatesInStore (wincrypt.h)
Fungsi CertEnumCertificatesInStore mengambil sertifikat pertama atau berikutnya di penyimpanan sertifikat. Digunakan dalam perulangan, fungsi ini dapat mengambil secara berurutan semua sertifikat di penyimpanan sertifikat.
Sintaks
PCCERT_CONTEXT CertEnumCertificatesInStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pPrevCertContext
);
Parameter
[in] hCertStore
Handel penyimpanan sertifikat.
[in] pPrevCertContext
Penunjuk ke CERT_CONTEXTkonteks sertifikat sebelumnya yang ditemukan.
Parameter ini harus NULL untuk memulai enumerasi dan mendapatkan sertifikat pertama di penyimpanan. Sertifikat berturut-turut dijumlahkan dengan mengatur pPrevCertContext ke penunjuk yang dikembalikan oleh panggilan sebelumnya ke fungsi. Fungsi ini membebaskan CERT_CONTEXT yang dirujuk oleh nilai non-NULL dari parameter ini.
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 status enumerasi awal. Enumerasi melewati sertifikat apa pun yang sebelumnya dihapus oleh CertDeleteCertificateFromStore.
Nilai kembali
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, hubungi GetLastError. Beberapa kemungkinan kode kesalahan mengikuti.
Nilai | Deskripsi |
---|---|
|
Handel dalam parameter hCertStore tidak sama dengan yang dalam konteks sertifikat yang ditujukan oleh pPrevCertContext. |
|
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. |
Keterangan
Pointer yang dikembalikan dibebaskan ketika diteruskan sebagai parameter pPrevCertContext pada panggilan berikutnya. Jika tidak, pointer harus dibebaskan dengan memanggil CertFreeCertificateContext. pPrevCertContextnon-NULL yang diteruskan ke CertEnumCertificatesInStore selalu dibebaskan bahkan untuk kesalahan.
Duplikat sertifikat yang saat ini dijumlahkan dapat dibuat 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
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | wincrypt.h |
Pustaka | Crypt32.lib |
DLL | Crypt32.dll |
Lihat juga
CertDeleteCertificateFromStore
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk