Поделиться через


Метод 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
BASE64 без BEGIN/END
CV_OUT_BASE64HEADER
BASE64 с BEGIN CERTIFICATE и END CERTIFICATE
CV_OUT_BASE64REQUESTHEADER
BASE64 с BEGIN NEW CERTIFICATE REQUEST и END NEW CERTIFICATE REQUEST
CV_OUT_BINARY
Двоичные данные
CV_OUT_HEX
Шестнадцатеричная строка
CV_OUT_HEXADDR
Шестнадцатеричная строка с адресом или смещением
CV_OUT_HEXASCII
Шестнадцатеричная строка с ASCII
CV_OUT_HEXASCIIADDR
Шестнадцатеричная строка с ASCII и адресом/смещением

[out] pvarValue

Указатель на значение типа VARIANT , содержащее данные для расширения, на которое ссылается в данный момент. Этот метод завершается ошибкой, если параметр pvarValue имеет значение NULL. После успешного выполнения этой функции pvarValue содержит данные расширения, на которые в настоящее время ссылается последовательность перечисления расширений. Вызывающий объект отвечает за вызов VariantClear по завершении работы с данными в pvarValue.

Возвращаемое значение

C++

Если метод завершается успешно, метод возвращает S_OK.

Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

VB

Возвращаемое значение — это Значение Variant , представляющее данные в расширении.

Комментарии

Этот метод используется для получения данных в расширении, на которое в настоящее время ссылается последовательность перечисления расширений.

Если последовательность перечисления расширений не ссылается на допустимое расширение, getValue завершается ошибкой . Для перехода по перечислению используйте один из следующих методов:

  • IEnumCERTVIEWEXTENSION::Reset: переходит к следующему расширению в последовательности перечисления.
  • IEnumCERTVIEWEXTENSION::Next: переходит к следующему расширению в последовательности перечисления.
  • IEnumCERTVIEWEXTENSION::Skip: пропускает указанное число расширений.
Этот метод завершается ошибкой, если последовательность перечисления расширений была получена путем вызова метода 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
Header certview.h (включая Certsrv.h)
Библиотека Certidl.lib
DLL Certadm.dll

См. также раздел

ICertView::EnumCertViewColumn

IEnumCERTVIEWEXTENSION

IEnumCERTVIEWEXTENSION::Next

IEnumCERTVIEWEXTENSION::Reset

IEnumCERTVIEWEXTENSION::Skip