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 成員的值釋放媒體的責任。 如果 pUnkForRelease 為 NULL,媒體的接收者會負責發行它;否則, pUnkForRelease 會指向適當物件上的 IUnknown ,以便呼叫其 Release 方法。 媒體必須配置並填入 GetData。
傳回值
此方法會在成功時傳回S_OK。 其他可能的值包括下列專案。
傳回碼 | Description |
---|---|
|
lindex 的值無效;目前僅支援 -1。 |
|
pformatetcIn 的值無效。 |
|
tymed 值無效。 |
|
dwAspect 值無效。 |
|
物件應用程式未執行。 |
|
配置媒體時發生錯誤。 |
|
已發生未預期的錯誤。 |
|
dwDirection 值無效。 |
|
此作業的記憶體不足。 |
備註
數據取用者會呼叫 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 |