Metode ICertServerExit::EnumerateExtensions (certif.h)

Metode EnumerateExtensions mengembalikan string pengidentifikasi objek (OID) (juga dikenal sebagai nama ekstensi) dari ekstensi sertifikat berikutnya yang akan dijumlahkan, lalu menambah penunjuk internal ke ekstensi berikut.

Sebelum memanggil EnumerateExtensions, aplikasi memanggil ICertServerExit::EnumerateExtensionsSetup. Setelah selesai menghitung, aplikasi memanggil ICertServerExit::EnumerateExtensionsClose.

Sintaks

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Parameter

[out] pstrExtensionName

Penunjuk ke nama ekstensi yang dijumlahkan.

Menampilkan nilai

C++

Jika metode berhasil, metode mengembalikan S_OK, dan *pstrExtensionName diatur ke BSTR yang berisi nama ekstensi yang dijumlahkan. Nilai S_FALSE dikembalikan jika ekstensi terakhir sudah dijumlahkan.

Untuk menggunakan metode ini, buat variabel jenis BSTR , atur variabel yang sama dengan NULL, dan teruskan alamat variabel ini sebagai pstrExtensionName.

Setelah Anda selesai menggunakan BSTR, bebaskan dengan memanggil fungsi SysFreeString .

Jika metode gagal, metode mengembalikan nilai HRESULT yang menunjukkan kesalahan. Untuk daftar kode kesalahan umum, lihat Nilai HRESULT Umum.

VB

Mengembalikan string yang berisi nama ekstensi enumerasi, atau string kosong jika ekstensi terakhir sudah dijumlahkan.

Keterangan

Metode ini menghitung ekstensi sertifikat yang dicatat dalam database, bahkan yang dinonaktifkan dan tidak muncul dalam sertifikat. Untuk menentukan apakah ekstensi dinonaktifkan, gunakan ICertServerExit::GetCertificateExtensionFlags untuk menguji bit EXTENSION_DISABLE_FLAG ekstensi.

Contoh

BSTR     bstrExt = NULL;
VARIANT  varExt;
LONG     ExtFlags;
HRESULT  hr;

VariantInit(&varExt);

// Enumerate the extensions.
while (S_OK ==
      (hr = pCertServerExit->EnumerateExtensions(&bstrExt)))
{
  // Retrieve the extension data.
  if (FAILED(pCertServerExit->GetCertificateExtension(
                              bstrExt,
                              PROPTYPE_BINARY,
                              &varExt)))
      printf("Failed GetCertificateExtension\n");
  else
  {
     // Retrieve the extension flags.
    if (FAILED(pCertServerExit->GetCertificateExtensionFlags(
                                &ExtFlags)))
        printf("Failed GetCertificateExtensionFlags\n");
    else
        // This sample will display the extension OID string,
        // the extension flags (in hex) and
        // the length of the BSTR binary ASN-encode extension.
        printf("Extension: %ws\tFlags:%x\tLength:%u\n",
               bstrExt,
               ExtFlags,
               SysStringByteLen(varExt.bstrVal));
  }
}
// Determine if hr was S_FALSE, meaning the enumeration 
// was completed, or some other error.
if (S_FALSE != hr)
    printf("Failed EnumerateExtensions - %x\n", hr);
// Free BSTR resource.
if (NULL != bstrExt)
    SysFreeString(bstrExt);
// Free VARIANT resource.
    VariantClear(&varExt);

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tidak ada yang didukung
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header certif.h (termasuk Certsrv.h)
Pustaka Certidl.lib
DLL Certcli.dll

Lihat juga

ICertServerExit

ICertServerExit::EnumerateExtensionsClose

ICertServerExit::EnumerateExtensionsSetup

ICertServerExit::GetCertificateExtension

ICertServerExit::GetCertificateExtensionFlags