IEnumCERTVIEWEXTENSION::GetValue 方法 (certview.h)

GetValue 方法检索扩展枚举序列中当前扩展的值。

语法

HRESULT GetValue(
  [in]  LONG    Type,
  [in]  LONG    Flags,
  [out] VARIANT *pvarValue
);

参数

[in] Type

返回数据的数据类型。 此参数可用于指定在返回扩展数据之前解码。 如果指定了PROPTYPE_BINARY,则不会解码数据,而是以原始格式返回数据。

指定以下值之一。

含义
PROPTYPE_BINARY
扩展值按原样检索,并在必要时进行 ASN.1 编码。
PROPTYPE_DATE
扩展值作为日期/时间返回。
PROPTYPE_LONG
扩展值以带符号的 long 的形式返回。
PROPTYPE_STRING
扩展值是 ASN.1 编码为 IA5 字符串。

[in] Flags

表示返回数据的输出格式的标志。 此参数的取值可为下列值之一:

含义
CV_OUT_BASE64
不带 BEGIN/END 的 BASE64
CV_OUT_BASE64HEADER
具有 BEGIN 证书和 END CERTIFICATE 的 BASE64
CV_OUT_BASE64REQUESTHEADER
具有 BEGIN 新证书请求和结束新证书请求的 BASE64
CV_OUT_BINARY
二进制
CV_OUT_HEX
十六进制字符串
CV_OUT_HEXADDR
具有地址/偏移量的十六进制字符串
CV_OUT_HEXASCII
具有 ASCII 的十六进制字符串
CV_OUT_HEXASCIIADDR
具有 ASCII 和地址/偏移量的十六进制字符串

[out] pvarValue

指向 VARIANT 类型的值的指针,该值包含当前引用的扩展的数据。 如果 pvarValue 参数为 NULL,此方法将失败。 成功完成此函数后, pvarValue 将包含扩展枚举序列当前引用的扩展数据。 使用 pvarValue 中的数据时,调用方负责调用 VariantClear

返回值

C++

如果方法成功,该方法将返回S_OK。

如果方法失败,它将返回一个 指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值

VB

返回值是一个 Variant 类型的 值,它表示扩展中的数据。

注解

此方法用于检索扩展枚举序列当前引用的扩展中的数据。

如果扩展枚举序列未引用有效的扩展, 则 GetValue 将失败。 使用以下方法之一在枚举中导航:

如果扩展枚举序列是通过调用 ICertView::EnumCertViewColumn 方法获取的,则此方法失败,因为该方法获取的枚举序列仅包含架构信息。

示例

VARIANT     var;
LONG        Index;
HRESULT     hr;
SYSTEMTIME  systime;

VariantInit(&var);

// Enumerate each extension
// pEnumExt is previously instantiated IEnumCERTVIEWEXTENSION object
while (S_OK == pEnumExt->Next(&Index))
{
    hr = pEnumExt->GetValue(PROPTYPE_BINARY, CV_OUT_HEX, &var);
    if (FAILED(hr))
    {
        printf("Failed GetValue - %x\n", hr);
        break;
    }
    switch(var.vt)
    {
        case VT_EMPTY:
            printf("VT_EMPTY\n");
            break;
        case VT_BSTR:
            printf("BSTR:%ws\n", var.bstrVal);
            break;
        case VT_DATE:
            VariantTimeToSystemTime(var.date, &systime);
            printf("%d.%d.%d %02d:%02d:%02d\n",
                   systime.wMonth,
                   systime.wDay,
                   systime.wYear,
                   systime.wHour,
                   systime.wMinute,
                   systime.wSecond );
            break;
        case VT_I2:
            printf("%d\n", var.iVal);
            break;
        case VT_I4:
            printf("%d\n", var.lVal);
            break;
        default:
            printf("type is:%i\n", var.vt);
            break;
    }
}
// Free resources.
VariantClear( &var );

要求

要求
最低受支持的客户端 无受支持的版本
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 certview.h (包括 Certsrv.h)
Library Certidl.lib
DLL Certadm.dll

另请参阅

ICertView::EnumCertViewColumn

IEnumCERTVIEWEXTENSION

IEnumCERTVIEWEXTENSION::Next

IEnumCERTVIEWEXTENSION::Reset

IEnumCERTVIEWEXTENSION::Skip