IOleItemContainer::GetObject メソッド (oleidl.h)

指定したオブジェクトへのポインターを取得します。

構文

HRESULT GetObject(
  [in]  LPOLESTR pszItem,
  [in]  DWORD    dwSpeedNeeded,
  [in]  IBindCtx *pbc,
  [in]  REFIID   riid,
  [out] void     **ppvObject
);

パラメーター

[in] pszItem

要求されたオブジェクトのコンテナーの名前。

[in] dwSpeedNeeded

呼び出し元がオブジェクトの取得を待機するおおよその時間を示します。 指定できる値は、列挙型 の BINDSPEED から取得されます。

[in] pbc

このバインド操作で使用されるバインド コンテキスト オブジェクトの IBindCtx インターフェイスへのポインター。 バインド コンテキストは、バインド プロセス中にバインドされたオブジェクトをキャッシュし、バインド コンテキストを使用するすべての操作に適用されるパラメーターを含み、バインド実装がその環境に関する情報を取得する手段を提供します。

[in] riid

要求されたインターフェイス ポインターの識別子への参照。

[out] ppvObject

riid で要求されたインターフェイス ポインターを受け取るポインター変数のアドレス。 正常に戻ると、*ppvObject には pszItem という名前のオブジェクトへの要求されたインターフェイス ポインターが含まれます。 成功した場合、実装は *ppvObjectAddRef を呼び出す必要があります。Release を呼び出すのは呼び出し元の責任です。 エラーが発生した場合、実装は *ppvObject を NULL に設定 します

戻り値

このメソッドは、標準の戻り値E_OUTOFMEMORYと、次の値を返すことができます。

リターン コード 説明
S_OK
メソッドは正常に完了しました。
MK_E_EXCEEDEDDEADLINE
バインド操作は、バインド コンテキストの BIND_OPTS 構造体で指定された制限時間内、または dwSpeedNeeded パラメーターによって示される速度で完了できませんでした。
MK_E_NOOBJECT
パラメーター pszItem は、このコンテナー内のオブジェクトを識別しません。
E_NOINTERFACE
要求されたインターフェイスが使用できませんでした。

注釈

IMoniker::BindToObject のアイテム モニカー実装では、このメソッドが呼び出され、アイテム モニカー内に格納されている名前が pszItem パラメーターとして渡されます。

実装者へのメモ

IOleItemContainer::GetObject の実装では、まず pszItem がコンテナーのオブジェクトの 1 つの有効な名前であるかどうかを判断する必要があります。 そうでない場合は、MK_E_NOOBJECTを返す必要があります。

pszItem で埋め込みオブジェクトまたはリンク オブジェクトに名前を付ける場合、実装では dwSpeedNeeded パラメーターの値をチェックする必要があります。 値がBINDSPEED_IMMEDIATEで、オブジェクトがまだ読み込まれていない場合は、MK_E_EXCEEDEDDEADLINEを返す必要があります。 オブジェクトが読み込まれている場合、実装では、オブジェクトが実行されているかどうかを判断する必要があります (たとえば、 OleIsRunning 関数を呼び出します)。 それが実行されておらず、 dwSpeedNeeded 値がBINDSPEED_MODERATEされている場合、実装は MK_E_EXCEEDEDDEADLINEを返す必要があります。 オブジェクトが実行されておらず、 dwSpeedNeeded がBINDSPEED_INDEFINITEされている場合、実装では OleRun 関数を呼び出して、オブジェクトを実行中の状態にする必要があります。 その後、要求されたインターフェイスの オブジェクトに対してクエリを実行できます。 インターフェイスに対してクエリを実行する前に、オブジェクトが実行されていることが重要であることに注意してください。

pszItem が擬似オブジェクトに名前を付ける場合、コンテナーが実行されるたびに擬似オブジェクトが実行されているため、実装では dwSpeedNeeded パラメーターを無視できます。 この場合、実装では、要求されたインターフェイスに対してクエリを実行するだけです。

dwSpeedNeeded によって指定されるよりも時間制限に関するより具体的な情報が必要な場合は、pbc パラメーターで IBindCtx::GetBindOptions を呼び出して、実際の期限パラメーターを取得できます。

要件

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

こちらもご覧ください

IOleItemContainer