IEnumCERTVIEWEXTENSION::GetValue 方法 (certview.h)
GetValue 方法检索扩展枚举序列中当前扩展的值。
语法
HRESULT GetValue(
[in] LONG Type,
[in] LONG Flags,
[out] VARIANT *pvarValue
);
参数
[in] Type
返回数据的数据类型。 此参数可用于指定在返回扩展数据之前解码。 如果指定了PROPTYPE_BINARY,则不会解码数据,而是以原始格式返回数据。
指定以下值之一。
值 | 含义 |
---|---|
|
扩展值按原样检索,并在必要时进行 ASN.1 编码。 |
|
扩展值作为日期/时间返回。 |
|
扩展值以带符号的 long 的形式返回。 |
|
扩展值是 ASN.1 编码为 IA5 字符串。 |
[in] Flags
表示返回数据的输出格式的标志。 此参数的取值可为下列值之一:
[out] pvarValue
指向 VARIANT 类型的值的指针,该值包含当前引用的扩展的数据。 如果 pvarValue 参数为 NULL,此方法将失败。 成功完成此函数后, pvarValue 将包含扩展枚举序列当前引用的扩展数据。 使用 pvarValue 中的数据时,调用方负责调用 VariantClear。
返回值
C++
如果方法成功,该方法将返回S_OK。如果方法失败,它将返回一个 指示错误的 HRESULT 值。 有关常见错误代码的列表,请参阅 通用 HRESULT 值。
VB
返回值是一个 Variant 类型的 值,它表示扩展中的数据。注解
此方法用于检索扩展枚举序列当前引用的扩展中的数据。
如果扩展枚举序列未引用有效的扩展, 则 GetValue 将失败。 使用以下方法之一在枚举中导航:
- IEnumCERTVIEWEXTENSION::Reset:移动到枚举序列中的下一个扩展。
- IEnumCERTVIEWEXTENSION::Next:移动到枚举序列中的下一个扩展。
- IEnumCERTVIEWEXTENSION::Skip:跳过指定数量的扩展。
示例
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 |
另请参阅
IEnumCERTVIEWEXTENSION