CoGetInstanceFromFile 関数 (objbase.h)

新しい オブジェクトを作成し、 IPersistFile::Load を使用してファイルから初期化します。

構文

HRESULT CoGetInstanceFromFile(
  [in, optional] COSERVERINFO *pServerInfo,
  [in, optional] CLSID        *pClsid,
  [in, optional] IUnknown     *punkOuter,
  [in]           DWORD        dwClsCtx,
  [in]           DWORD        grfMode,
  [in]           OLECHAR      *pwszName,
  [in]           DWORD        dwCount,
  [in, out]      MULTI_QI     *pResults
);

パラメーター

[in, optional] pServerInfo

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

[in, optional] pClsid

作成するオブジェクトのクラス識別子へのポインター。 このパラメーターには NULL を指定できます。この場合、インスタンス化するオブジェクトのクラスを取得するためのパラメーターとして pwszName を使用して、GetClassFile の呼び出しがあります。

[in, optional] punkOuter

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

[in] dwClsCtx

CLSCTX 列挙体の値。

[in] grfMode

ファイルを開く方法を指定します。 STGM 定数に関するページを参照してください。

[in] pwszName

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 配列で要求されたインターフェイスはどれも正常に取得されませんでした。

注釈

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

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

要件

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

こちらもご覧ください

CLSCTX

CoCreateInstanceEx

CoGetInstanceFromIStorage