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) |
程式庫 | Certidl.lib |
Dll | Certadm.dll |
另請參閱
IEnumCERTVIEWEXTENSION