次の方法で共有


IDataObject::GetDataHere メソッド (objidl.h)

ソース データ オブジェクトからデータを取得するために、データ コンシューマーによって呼び出されます。 このメソッドは、呼び出し元が指定したストレージ メディアを割り当てて解放する必要がある点で 、GetData メソッドとは異なります。

構文

HRESULT GetDataHere(
  [in]      FORMATETC *pformatetc,
  [in, out] STGMEDIUM *pmedium
);

パラメーター

[in] pformatetc

データを渡すときに使用する形式、中、およびターゲット デバイスを定義する FORMATETC 構造体へのポインター。 1 つのメディアのみを tymed で指定でき、有効な値は TYMED_ISTORAGE、TYMED_ISTREAM、TYMED_HGLOBAL、またはTYMED_FILEのみです。

[in, out] pmedium

転送されるデータを含むストレージ メディアを定義する STGMEDIUM 構造体へのポインター。 メディアは呼び出し元によって割り当てられ、 GetDataHere によって入力される必要があります。 呼び出し元は、メディアを解放する必要もあります。 このメソッドの実装では、このパラメーターが指す STGMEDIUM 構造体の punkForRelease メンバーに対して常に NULL 値を指定する必要があります。

戻り値

このメソッドは、成功したS_OKを返します。 その他の使用可能な値は次のとおりです。

リターン コード 説明
DV_E_LINDEX
lindex の値が無効です。現在、-1 のみがサポートされています。
DV_E_FORMATETC
pformatetc の値が無効です。
DV_E_TYMED
tymed 値が無効です。
DV_E_DVASPECT
dwAspect 値が無効です。
OLE_E_NOTRUNNING
オブジェクト アプリケーションが実行されていません。
STG_E_MEDIUMFULL
メディアを割り当てるときにエラーが発生しました。
E_UNEXPECTED
予期しないエラーが発生しました。
E_INVALIDARG
dwDirection パラメーターが無効です。
E_OUTOFMEMORY
この操作で使用できるメモリが不足していました。

解説

GetDataHere メソッドは IDataObject::GetData に似ていますが、呼び出し元は pmedium で指定されたメディアの割り当てと解放の両方を行う必要があります。 GetDataHere はFORMATETC 構造体で記述されているデータをレンダリングし、その呼び出し元が提供する STGMEDIUM 構造体にデータをコピーします。 たとえば、メディアがTYMED_HGLOBALされている場合、このメソッドはメディアのサイズを変更したり、新しい hGlobal を割り当てることはできません。

メタファイルなどの GDI 型など、 GetDataHere の呼び出しでは一部のメディアが適切ではありません。 GetDataHere メソッドは、呼び出し元が提供するメタファイルにデータを格納できません。 一般に、このメソッドでサポートする必要がある記憶域メディアは、TYMED_ISTORAGE、TYMED_ISTREAM、およびTYMED_FILEのみです。

転送メディアがストリームの場合、OLE では、データが返される場所とストリームのシーク ポインターの位置を想定します。 GetData 呼び出しでは、返されるデータはストリーム位置 0 からストリームの現在のシーク ポインター (つまり、終了時の位置) の直前までです。 GetDataHere の場合、返されるデータは、エントリのストリーム位置から、終了時の位置の直前までです。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー objidl.h

関連項目

Idataobject