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 | 该扩展是从存储在 szOID_CERT_EXTENSIONS (1.3.6.1.4.1.311.2.14) 或szOID_RSA_certExtensions (1.2.840.113549.11.9.14 的扩展数组中提取的,) PKCS #10 请求的属性。 |
EXTENSION_ORIGIN_POLICY | 策略模块设置扩展。 |
EXTENSION_ORIGIN_ADMIN | 管理员设置扩展。 |
EXTENSION_ORIGIN_SERVER | 服务器引擎设置扩展。 |
EXTENSION_ORIGIN_RENEWALCERT | 扩展是从存储在 szOID_RENEWAL_CERTIFICATE (1.3.6.1.4.1.311.13.1 的证书中提取的,) PKCS #10 续订请求的属性。 |
EXTENSION_ORIGIN_IMPORTEDCERT | 该扩展是从导入的证书中提取的, (证书已传递到 ICertAdmin::ImportCertificate) 。 |
EXTENSION_ORIGIN_PKCS7 | 该扩展是从存储在 szOID_CERT_EXTENSIONS (1.3.6.1.4.1.1.311.2.14) 或szOID_RSA_certExtensions (1.2.840.113549.11.9.14 的扩展数组中提取的,) PKCS #7 请求的属性。 |
提供预定义掩码是为了便于确定在返回值中设置哪些标志。 提供了以下掩码。
掩码值 | 说明 |
---|---|
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) |
Library | Certidl.lib |
DLL | Certadm.dll |
另请参阅
IEnumCERTVIEWEXTENSION::GetName