Metode ICertServerPolicy::EnumerateExtensions (certif.h)

Metode EnumerateExtensions mengambil pengidentifikasi objek (OID) ekstensi saat ini dan memindahkan penunjuk enumerasi internal ke ekstensi berikutnya.

Sintaks

HRESULT EnumerateExtensions(
  [out] BSTR *pstrExtensionName
);

Parameter

[out] pstrExtensionName

Pointer ke BSTR yang berisi OID ekstensi saat ini.

Nilai kembali

C++

Jika metode berhasil, metode mengembalikan S_OK, dan parameter pstrExtensionName berisi OID ekstensi saat ini. 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 OID ekstensi, atau string kosong jika ekstensi terakhir sudah dijumlahkan.

Keterangan

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

Setelah selesai menghitung, panggil metode EnumerateExtensionsClose untuk membebaskan sumber daya yang digunakan oleh panggilan enumerasi.

Contoh

#include <windows.h>
#include <stdio.h>
#include <Certif.h>

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

VariantInit(&varExt);

// Enumerate the extensions.
while (S_OK ==
      (hr = pCertServerPol->EnumerateExtensions(&bstrExt)))
{
  // Retrieve the extension data.
  if (FAILED(pCertServerPol->GetCertificateExtension(
                             bstrExt,
                             PROPTYPE_BINARY,
                             &varExt)))
      printf("Failed GetCertificateExtension\n");
  else
  {
     // Retrieve the extension flags.
    if (FAILED(pCertServerPol->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

   
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

EnumerateExtensionsClose

EnumerateExtensionsSetup

GetCertificateExtension

GetCertificateExtensionFlags

ICertServerPolicy