次の方法で共有


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
拡張値は、IA5 文字列としてエンコードされた ASN.1 です。

[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
Binary
CV_OUT_HEX
16 進数文字列
CV_OUT_HEXADDR
アドレス/オフセットを含む 16 進文字列
CV_OUT_HEXASCII
ASCII を含む 16 進文字列
CV_OUT_HEXASCIIADDR
ASCII とアドレス/オフセットを含む 16 進文字列

[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