IEnumCERTVIEWEXTENSION::GetFlags 方法 (certview.h)
GetFlags 方法會擷取延伸模組列舉序列中目前延伸模組的原則和原始旗標。
原則和原始旗標都會在一個變數中傳回,並提供位掩碼來擷取個別值。
語法
HRESULT GetFlags(
[out] LONG *pFlags
);
參數
[out] pFlags
LONG 類型的指標,其中包含延伸模塊的原則和原始旗標。 如果 pFlags 參數設定為 NULL,這個方法就會失敗。
傳回值
C++
如果方法成功,方法會傳回S_OK。如果方法失敗,它會傳回 HRESULT 值,指出錯誤。 如需常見錯誤碼的清單,請參閱 一般 HRESULT 值。
VB
傳回值代表延伸模組的原則和原點值。備註
這個方法可用來擷取延伸模組列舉序列目前所參考之延伸模組的原則和原始旗標。
原則旗標提供憑證延伸模組的相關信息,而且可由原則模塊設定。
原始旗標表示設定憑證延伸模組的模組,而且只由伺服器引擎設定。
您可以從延伸模組傳回一或多個原則旗標。 以下是預先定義的原則旗標。
原則旗標值 | 說明 |
---|---|
EXTENSION_CRITICAL_FLAG | 這是重要的延伸模組。 |
EXTENSION_DISABLE_FLAG | 將不會使用擴充功能。 |
您也可以傳回下列其中一個原始旗標。
原始旗標值 | 說明 |
---|---|
EXTENSION_ORIGIN_REQUEST | 延伸模組是從儲存在 PKCS #10 要求之 szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) 或 szOID_RSA_certExtensions (1.2.840.113549.1.9.14) 屬性的擴充數組擷取。 |
EXTENSION_ORIGIN_POLICY | 原則模組會設定擴充功能。 |
EXTENSION_ORIGIN_ADMIN | 系統管理員設定擴充功能。 |
EXTENSION_ORIGIN_SERVER | 伺服器引擎會設定擴充功能。 |
EXTENSION_ORIGIN_RENEWALCERT | 延伸模組是從 PKCS #10 更新要求的 szOID_RENEWAL_CERTIFICATE (1.3.6.1.1.311.1.311.13.) 1 屬性中儲存的憑證擷取。 |
EXTENSION_ORIGIN_IMPORTEDCERT | 延伸模組是從匯入的憑證擷取, (憑證傳遞至 ICertAdmin::ImportCertificate) 。 |
EXTENSION_ORIGIN_PKCS7 | 延伸模組是從儲存在 PKCS #7 要求之 szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.1.14) 或szOID_RSA_certExtensions (1.2.840.113549.1.9.14) 屬性的擴充數組擷取。 |
提供預先定義的遮罩,以方便用來判斷傳回值中設定的旗標。 提供下列遮罩。
遮罩值 | 說明 |
---|---|
EXTENSION_POLICY_MASK | 此值 (0x0000FFFF) 用來檢查原則旗標。 |
EXTENSION_ORIGIN_MASK | 此值 (0x000F0000) 用來檢查原始旗標。 |
如果擴充列舉序列未參考有效的延伸模組, GetFlags 將會失敗。 使用下列其中一種方法來巡覽列舉:
- IEnumCERTVIEWEXTENSION::Reset:移至列舉序列中的下一個延伸模組。
- IEnumCERTVIEWEXTENSION::Next:移至列舉序列中的下一個延伸模組。
- IEnumCERTVIEWEXTENSION::Skip: 略過指定的延伸模組數目。
範例
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;
}
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 都不支援 |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | certview.h (包含 Certsrv.h) |
程式庫 | Certidl.lib |
Dll | Certadm.dll |
另請參閱
IEnumCERTVIEWEXTENSION::GetName