共用方式為


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 CERTIFICATE 和 END CERTIFICATE 的 BASE64
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 包含延伸模組列舉序列目前參考的延伸模塊數據。 呼叫端負責在 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)
程式庫 Certidl.lib
Dll Certadm.dll

另請參閱

ICertView::EnumCertViewColumn

IEnumCERTVIEWEXTENSION

IEnumCERTVIEWEXTENSION::Next

IEnumCERTVIEWEXTENSION::Reset

IEnumCERTVIEWEXTENSION::Skip