CoGetInstanceFromIStorage 関数 (objbase.h)

新しい オブジェクトを作成し、 IPersistFile::Load の内部呼び出しを介してストレージ オブジェクトから初期化します。

構文

HRESULT CoGetInstanceFromIStorage(
  [in, optional] COSERVERINFO *pServerInfo,
  [in, optional] CLSID        *pClsid,
  [in, optional] IUnknown     *punkOuter,
  [in]           DWORD        dwClsCtx,
  [in]           IStorage     *pstg,
  [in]           DWORD        dwCount,
  [in, out]      MULTI_QI     *pResults
);

パラメーター

[in, optional] pServerInfo

オブジェクトをインスタンス化するコンピューターと、使用する認証設定を指定する COSERVERINFO 構造体へのポインター。 このパラメーターには NULL を指定できます。この場合、オブジェクトは現在のコンピューター、クラスの RemoteServerName レジストリ値で指定されたコンピューター、またはクラスに ActivateAtStorage 値が指定されている場合、またはローカル レジストリ情報がない場合は pstg ストレージ オブジェクトが存在するコンピューターでインスタンス化されます。

[in, optional] pClsid

作成するオブジェクトのクラス識別子へのポインター。 このパラメーターには NULL を指定できます。この場合、 IStorage::Stat を呼び出してオブジェクトのクラスを検索します。

[in, optional] punkOuter

NULL 以外の場合、 はインスタンスが集計の一部として作成されていることを示し、punkOuter を新しいインスタンスの制御する IUnknown へのポインターとして使用します。 集計は、クロスプロセスまたはコンピューター間ではサポートされていません。 オブジェクトをプロセス外でインスタンス化すると、 punkOuterNULL 以外の場合は、CLASS_E_NOAGGREGATIONが返されます。

[in] dwClsCtx

CLSCTX 列挙体の値。

[in] pstg

IPersistFile::Load を使用してオブジェクトを初期化するために使用されるストレージ オブジェクトへのポインター。 このパラメーターを NULL にすることはできません。

[in] dwCount

pResults 内の構造体の数。 このパラメーターは 0 より大きくする必要があります。

[in, out] pResults

MULTI_QI構造体の配列。 各構造体には、要求されたインターフェイス (pIID) の識別子、インターフェイス ポインター (pItf) を返す場所、 QueryInterface (hr) の呼び出しの戻り値の 3 つのメンバーがあります。

戻り値

この関数は、標準の戻り値E_INVALIDARGと、次の値を返すことができます。

リターン コード 説明
S_OK
関数は、すべてのインターフェイスを正常に取得しました。
CO_S_NOTALLINTERFACES
少なくとも 1 つが、 pResults 配列で要求されたすべてのインターフェイスが正常に取得されたわけではありません。 各MULTI_QI構造体の hr メンバーは、特定のインターフェイスが返されたかどうかをS_OKまたはE_NOINTERFACEで示します。
E_NOINTERFACE
pResults 配列で要求されたインターフェイスはどれも正常に取得されませんでした。

注釈

CoGetInstanceFromIStorage は、新しいオブジェクトを作成し、 IPersistFile::Load を使用してストレージ オブジェクトから初期化します。 この関数の結果は、 CoCreateInstanceEx を呼び出してインスタンスを作成した後、 IPersistFile::Load の初期化呼び出しを行うのと似ていますが、次の重要な違いがあります。

  • リモート コンピューターでオブジェクトをインスタンス化するときに、この関数で必要なネットワーク ラウンド トリップの数を減らします。
  • dwClsCtx が CLSCTX_REMOTE_SERVER に設定され、pServerInfoNULL の場合、クラスが ActivateAtStorage 値に登録されている場合、またはレジストリ情報が関連付けられていない場合、この関数は pstg が存在するコンピューター上のオブジェクトをインスタンス化し、可能な限り少ないネットワーク トラフィックを提供します。

要件

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

こちらもご覧ください

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromFile