共用方式為


VariantToBuffer 函式 (propvarutil.h)

擷取儲存在 VARIANT 結構中類型VT_ARRRAY的緩衝區內容 |VT_UI1。

語法

PSSTDAPI VariantToBuffer(
  [in]  REFVARIANT varIn,
  [out] void       *pv,
  [in]  UINT       cb
);

參數

[in] varIn

類型: REFVARIANT

來源 VARIANT 結構的參考。

[out] pv

類型: VOID*

長度 cb 位元組緩衝區的指標。 當此函式傳回時,會包含擷取緩衝區值的第一 個 cb 位元組。

[in] cb

類型: UINT

pv 緩衝區的大小,以位元組為單位。 緩衝區的大小應與要擷取的數據大小相同,或較小。

傳回值

類型: HRESULT

傳回下列其中一值:

傳回碼 描述
S_OK
已成功擷取數據。
E_INVALIDARG
VARIANT 不是類型VT_ARRRAY |VT_UI1。
E_FAIL
VARIANT 緩衝區值少於 cb 位元組。

備註

當呼叫的應用程式預期 VARIANT 保存緩衝區值時,會使用此函式。 呼叫端應用程式應該先檢查值是否具有預期的長度,然後再呼叫此函式。

如果來源 VARIANT 的類型為 VT_ARRAY |VT_UI1,此函式會從 結構擷取第一 個 cb 位元組,並將其放在 pv 所指向的緩衝區中。

如果預存的值少於 cb 位元組, 則 VariantToBuffer 會失敗,而且不會修改緩衝區。

如果值超過 cb 位元組, 則 VariantToBuffer 會成功並截斷值。

範例

下列範例要包含在較大的程式中,示範如何使用 VariantToBuffer 來存取已儲存在 VARIANT 中的結構。

// VARIANT var;
// Assume variable var is initialized and valid. 
// The application expects var to hold a WIN32_FIND_DATAW structure 
// with sizeof(WIN32_FIND_DATAW) bytes.

HRESULT hr = E_UNEXPECTED;

// Verify that the value length is acceptable before you call VariantToBuffer.
if (VariantGetElementCount(var) == sizeof(WIN32_FIND_DATAW))
{
    WIN32_FIND_DATAW wfd;

    hr = VariantToBuffer(var, &wfd, sizeof(wfd));

    if (SUCCEEDED(hr))
    {
        // wfd is now initialized.
    }
}

規格需求

需求
最低支援的用戶端 Windows XP 搭配 SP2、Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 SP1 [僅限傳統型應用程式]
目標平台 Windows
標頭 propvarutil.h
程式庫 Propsys.lib
Dll Propsys.dll (6.0 版或更新版本)
可轉散發套件 Windows 桌面搜尋 (WDS) 3.0

另請參閱

InitVariantFromBuffer

PropVariantToBuffer