Metode IEnumCERTVIEWEXTENSION::GetFlags (certview.h)
Metode GetFlags mengambil bendera kebijakan dan asal ekstensi saat ini dalam urutan enumerasi ekstensi.
Bendera kebijakan dan asal dikembalikan dalam satu variabel, dan bitmask disediakan untuk mengambil nilai individual.
Sintaks
HRESULT GetFlags(
[out] LONG *pFlags
);
Parameter
[out] pFlags
Penunjuk ke jenis LONG yang berisi bendera kebijakan dan asal ekstensi. Metode ini gagal jika parameter pFlags diatur ke NULL.
Mengembalikan nilai
C++
Jika metode berhasil, metode mengembalikan S_OK.Jika metode gagal, metode mengembalikan nilai HRESULT yang menunjukkan kesalahan. Untuk daftar kode kesalahan umum, lihat Nilai HRESULT Umum.
VB
Nilai yang dikembalikan mewakili kebijakan dan nilai asal ekstensi.Keterangan
Metode ini digunakan untuk mengambil bendera kebijakan dan asal ekstensi yang saat ini direferensikan oleh urutan enumerasi ekstensi.
Bendera kebijakan memberikan informasi tentang ekstensi sertifikat dan dapat diatur oleh modul kebijakan.
Bendera asal menunjukkan modul yang mengatur ekstensi sertifikat dan hanya diatur oleh mesin server.
Satu atau beberapa bendera kebijakan dapat dikembalikan dari ekstensi. Berikut ini adalah bendera kebijakan yang telah ditentukan sebelumnya.
Nilai bendera kebijakan | Penjelasan |
---|---|
EXTENSION_CRITICAL_FLAG | Ini adalah ekstensi penting. |
EXTENSION_DISABLE_FLAG | Ekstensi tidak akan digunakan. |
Salah satu bendera asal berikut juga dapat dikembalikan.
Nilai bendera asal | Penjelasan |
---|---|
EXTENSION_ORIGIN_REQUEST | Ekstensi diekstrak dari array ekstensi yang disimpan dalam szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) atau szOID_RSA_certExtensions (1.2.840.113549.1.9.14) atribut PKCS #10 permintaan. |
EXTENSION_ORIGIN_POLICY | Modul kebijakan mengatur ekstensi. |
EXTENSION_ORIGIN_ADMIN | Administrator mengatur ekstensi. |
EXTENSION_ORIGIN_SERVER | Mesin server mengatur ekstensi. |
EXTENSION_ORIGIN_RENEWALCERT | Ekstensi diekstrak dari sertifikat yang disimpan dalam atribut szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1) dari permintaan perpanjangan PKCS #10. |
EXTENSION_ORIGIN_IMPORTEDCERT | Ekstensi diekstrak dari sertifikat yang diimpor (sertifikat diteruskan ke ICertAdmin::ImportCertificate). |
EXTENSION_ORIGIN_PKCS7 | Ekstensi diekstrak dari array ekstensi yang disimpan dalam szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) atau szOID_RSA_certExtensions (1.2.840.113549.1.9.14) atribut PKCS #7 permintaan. |
Masker yang telah ditentukan disediakan untuk kemudahan penggunaan dalam menentukan bendera mana yang diatur dalam nilai pengembalian. Masker berikut disediakan.
Nilai masker | Penjelasan |
---|---|
EXTENSION_POLICY_MASK | Nilai ini (0x0000FFFF) digunakan untuk memeriksa bendera kebijakan. |
EXTENSION_ORIGIN_MASK | Nilai ini (0x000F0000) digunakan untuk memeriksa bendera asal. |
Jika urutan enumerasi ekstensi tidak mereferensikan ekstensi yang valid, GetFlags akan gagal. Gunakan salah satu metode berikut untuk menavigasi melalui enumerasi:
- IEnumCERTVIEWEXTENSION::Reset: Berpindah ke ekstensi berikutnya dalam urutan enumerasi.
- IEnumCERTVIEWEXTENSION::Next: Pindah ke ekstensi berikutnya dalam urutan enumerasi.
- IEnumCERTVIEWEXTENSION::Skip: Melewati sejumlah ekstensi tertentu.
Contoh
HRESULT hr;
LONG ExtFlags;
// pEnumExt is previously instantiated IEnumCERTVIEWEXTENSION object
hr = pEnumExt->GetFlags(&ExtFlags);
if (S_OK != hr)
printf("Failed GetFlags - %x\n", hr);
else
{
LONG ExtPol, ExtOrig;
ExtPol = ExtFlags & EXTENSION_POLICY_MASK;
if (ExtPol & EXTENSION_CRITICAL_FLAG)
printf("The extension is critical\n");
if (ExtPol & EXTENSION_DISABLE_FLAG )
printf("The extension is disabled\n");
ExtOrig = ExtFlags & EXTENSION_ORIGIN_MASK;
switch (ExtOrig)
{
case EXTENSION_ORIGIN_REQUEST:
printf("Extension originated by PKCS #10 Request\n");
break;
case EXTENSION_ORIGIN_POLICY:
printf("Extension originated by Policy\n");
break;
case EXTENSION_ORIGIN_ADMIN:
printf("Extension originated by Admin\n");
break;
case EXTENSION_ORIGIN_SERVER:
printf("Extension originated by Server\n");
break;
case EXTENSION_ORIGIN_RENEWALCERT:
printf("Extension originated by Renewal Request\n");
break;
case EXTENSION_ORIGIN_IMPORTEDCERT:
printf("Extension originated by an imported "
"certificate\n");
break;
case EXTENSION_ORIGIN_PKCS7:
printf("Extension originated by PKCS #7 Request\n");
break;
default:
printf("Unknown extension origin\n");
break;
}
}
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 | certview.h (termasuk Certsrv.h) |
Pustaka | Certidl.lib |
DLL | Certadm.dll |
Lihat juga
IEnumCERTVIEWEXTENSION::GetName