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
E_INVALIDARG
Handel dalam parameter hCertStore tidak sama dengan yang dalam konteks sertifikat yang ditujukan oleh pPrevCertContext.
CRYPT_E_NOT_FOUND
Tidak ada sertifikat yang ditemukan. Ini terjadi jika penyimpanan kosong atau jika fungsi mencapai akhir daftar penyimpanan.
ERROR_NO_MORE_FILES
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

CERT_CONTEXT

CertDeleteCertificateFromStore

CertDuplicateCertificateContext

CertFindCRLInStore

CertFindCTLInStore

CertFindCertificateInStore

CertFreeCertificateContext

Fungsi Sertifikat