Share via


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

ソース データ オブジェクトからデータを取得するために、データ コンシューマーによって呼び出されます。 GetData メソッドは、指定した FORMATETC 構造体で記述されたデータをレンダリングし、指定された STGMEDIUM 構造体を介して転送します。 その後、呼び出し元は STGMEDIUM 構造体を解放する責任を負います。

構文

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

パラメーター

[in] pformatetcIn

データを渡すときに使用するフォーマット、メディア、ターゲット デバイスを定義する FORMATETC 構造体へのポインター。 ブール型の OR 演算子を使用して複数のメディアを指定し、メソッドがそれらの指定の中から最良のメディアを選択できるようにします。

[out] pmedium

Tymed メンバーを介して返されたデータを含むストレージ メディアと、その pUnkForRelease メンバーの値を介してメディアを解放する責任を示す STGMEDIUM 構造体へのポインター。 pUnkForReleaseNULL の場合、メディアのレシーバーはメディアを解放します。それ以外の場合、pUnkForRelease は適切なオブジェクトの IUnknown を指しているため、Release メソッドを呼び出すことができます。 メディアを割り当て、 GetData で入力する必要があります。

戻り値

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

リターン コード 説明
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 構造体を介して定義) を介して伝達されたデータ オブジェクトからデータを取得します。

呼び出し元へのメモ

Boolean OR 演算子を使用して、複数の許容される定 メディアを指定できます。 GetData では、データを最もよく表すメディアを OR の値から選択し、割り当てを行い、メディアを解放する責任を示す必要があります。

ストリーム間で転送されるデータは、ストリーム ポインターの位置 0 から現在のストリーム ポインターの直前の位置 (つまり、終了時のストリーム ポインターの位置) まで拡張されます。

実装者へのメモ

GetData では、FORMATETC 構造体内のすべてのフィールドをチェックする必要があります。 GetData は要求された側面をレンダリングし、可能であれば要求されたメディアを使用することが重要です。 データ オブジェクトが FORMATETC で指定された情報に準拠できない場合、メソッドは DV_E_FORMATETCを返す必要があります。 メディアの割り当て試行が失敗した場合、メソッドは STG_E_MEDIUMFULLを返す必要があります。 STGMEDIUM 構造体のすべてのフィールドを入力することが重要です。

呼び出し元はデータを返す複数のメディアを指定できますが、 GetData は 1 つのメディアのみを提供できます。 最初の転送が選択したメディアで失敗した場合、このメソッドを実装して、エラーを返す前に指定された他のメディアのいずれかを試すことができます。

要件

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

こちらもご覧ください

Idataobject