IDataObject::GetData 方法 (objidl.h)

由數據取用者呼叫,以從源數據物件取得數據。 GetData 方法會轉譯指定 FORMATETC 結構中所述的數據,並透過指定的 STGMEDIUM 結構加以傳輸。 呼叫端接著會負責釋放 STGMEDIUM 結構。

語法

HRESULT GetData(
  [in]  FORMATETC *pformatetcIn,
  [out] STGMEDIUM *pmedium
);

參數

[in] pformatetcIn

FORMATETC 結構的指標,定義傳遞數據時要使用的格式、中型和目標裝置。 您可以使用布林值 OR 運算子指定多個媒體,好讓方法可以在指定的媒體中選擇最適合的媒體。

[out] pmedium

STGMEDIUM 結構的指標,指出透過其 tymed 成員包含傳回數據的儲存媒體,以及透過其 pUnkForRelease 成員的值釋放媒體的責任。 如果 pUnkForReleaseNULL,媒體的接收者會負責發行它;否則, pUnkForRelease 會指向適當物件上的 IUnknown ,以便呼叫其 Release 方法。 媒體必須配置並填入 GetData

傳回值

此方法會在成功時傳回S_OK。 其他可能的值包括下列專案。

傳回碼 Description
DV_E_LINDEX
lindex 的值無效;目前僅支援 -1。
DV_E_FORMATETC
pformatetcIn 的值無效。
DV_E_TYMED
tymed 值無效。
DV_E_DVASPECT
dwAspect 值無效。
OLE_E_NOTRUNNING
物件應用程式未執行。
STG_E_MEDIUMFULL
配置媒體時發生錯誤。
E_UNEXPECTED
已發生未預期的錯誤。
E_INVALIDARG
dwDirection 值無效。
E_OUTOFMEMORY
此作業的記憶體不足。

備註

數據取用者會呼叫 GetData 從資料物件擷取數據,此物件會透過 透過 STGMEDIUM 結構所定義的儲存媒體 (來傳達) 。

來電者的附註

您可以使用布林值 OR 運算子來指定多個可接受的 tymed 媒體。 GetData 必須從 OR'd 值中選擇最能代表數據的媒體、執行配置,並指出發行媒體的責任。

跨數據流傳輸的數據會從數據流指標的位置零延伸至目前數據流 (指標之前的位置,也就是結束時) 的數據流指標位置。

實作者的注意事項

GetData 必須檢查 FORMATETC 結構中的所有欄位。 GetData 必須轉譯所要求的層面,並盡可能使用要求的媒體。 如果數據物件不符合 FORMATETC 中指定的資訊,方法應該會傳回DV_E_FORMATETC。 如果嘗試配置媒體失敗,方法應該會傳回STG_E_MEDIUMFULL。 請務必填入 STGMEDIUM 結構中的所有欄位。

雖然呼叫端可以指定多個媒體來傳回數據, 但 GetData 只能提供一個媒體。 如果初始傳輸因選取的媒體而失敗,則可以實作這個方法,以嘗試其中一個指定的其他媒體,然後再傳回錯誤。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IDataObject