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 将失败。 使用以下方法之一在枚举中导航:

示例

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

IEnumCERTVIEWEXTENSION::GetName

IEnumCERTVIEWEXTENSION::GetValue

IEnumCERTVIEWEXTENSION::Next