Bagikan melalui


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.

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 CERT_CONTEXT yang dirujuk oleh nilai NULL non-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 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
E_INVALIDARG
Handel dalam parameter hCertStore tidak sama dengan yang dalam konteks sertifikat yang ditunjukkan 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.

Komentar

Pointer yang dikembalikan dibebaskan saat diteruskan sebagai parameter pPrevCertContext pada panggilan berikutnya. Jika tidak, pointer harus dibebaskan dengan memanggil CertFreeCertificateContext. non-NULLpPrevCertContext yang diteruskan ke CertEnumCertificatesInStore selalu dibebaskan bahkan untuk kesalahan.

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

CERT_CONTEXT

CertDeleteCertificateFromStore

CertDuplicateCertificateContext

CertFindCRLInStore

CertFindCTLInStore

CertFindCertificateInStore

CertFreeCertificateContext

Fungsi Sertifikat