OleCreateLinkToFileEx 関数 (ole2.h)

OleCreateLinkToFile でサポートされている 1 つの形式ではなく、複数の形式のプレゼンテーションまたはデータのキャッシュを必要とするコンテナー内のオブジェクトのより効率的なインスタンス化をサポートすることで、OleCreateLinkToFile 機能を拡張します。

構文

HRESULT OleCreateLinkToFileEx(
  [in]  LPCOLESTR       lpszFileName,
  [in]  REFIID          riid,
  [in]  DWORD           dwFlags,
  [in]  DWORD           renderopt,
  [in]  ULONG           cFormats,
  [in]  DWORD           *rgAdvf,
  [in]  LPFORMATETC     rgFormatEtc,
  [in]  IAdviseSink     *lpAdviseSink,
  [out] DWORD           *rgdwConnection,
  [in]  LPOLECLIENTSITE pClientSite,
  [in]  LPSTORAGE       pStg,
  [out] LPVOID          *ppvObj
);

パラメーター

[in] lpszFileName

リンクを作成するファイルの名前へのポインター。

[in] riid

返すオブジェクトのインターフェイスの識別子への参照。

[in] dwFlags

このパラメーターには、0 またはOLECREATE_LEAVERUNNING (0x00000001) を指定できます。

[in] renderopt

OLERENDER 列挙から取得された値。

[in] cFormats

renderopt がOLERENDER_FORMATの場合、 は rgFormatEtc 配列内の FORMATETC 構造体の数を示します。これは少なくとも 1 つでなければなりません。 それ以外の場合は、このパラメーターは 0 である必要があります。

[in] rgAdvf

renderopt がOLERENDER_FORMATの場合、DWORD 要素の配列を指し、それぞれが ADVF 列挙からの値の組み合わせです。 この配列の各要素は、pAdviseSinkNULL であるか NULL 以外であるかに応じて、IOleCache::Cache または IDataObject::D Advise の呼び出しに advf パラメーターとして渡されます (以下を参照)。 それ以外のすべての場合、このパラメーターは NULL である必要があります。

[in] rgFormatEtc

renderopt がOLERENDER_FORMATされている場合は、FORMATETC 構造体の配列を指します。 pAdviseSinkNULL の場合、この配列の各要素は pFormatEtc パラメーターとして、オブジェクトの IOleCache::Cache の呼び出しに渡されます。 これにより、オブジェクトのインプロセス ハンドラー (通常は既定のハンドラー) によって管理されるデータとプレゼンテーション キャッシュに、プレゼンテーションまたはその他のキャッシュ可能なデータが設定されます。 pAdviseSinkNULL 以外の場合、この配列の各要素は pFormatEtc パラメーターとして IDataObject::D Advise の呼び出しに渡されます。 これにより、呼び出し元 (通常は OLE コンテナー) は、オブジェクトから受信したデータの独自のキャッシュまたは処理を実行できます。

[in] lpAdviseSink

renderopt がOLERENDER_FORMATされている場合は、有効な IAdviseSink ポインター (カスタム キャッシュまたはデータ アドバイスの処理を示す) または NULL (データ形式の既定のキャッシュを示す) のいずれかを指定できます。

[out] rgdwConnection

IDataObject::D Advise を使用して各アドバイザリ接続に IAdviseSink インターフェイスが登録されたときに返される dwConnection 値の配列を返す場所。返されるアドバイザリ接続が必要ない場合は NULLpAdviseSinkNULL の場合、このパラメーターは NULL である必要があります。

[in] pClientSite

オブジェクトがコンテナーからサービスを要求するプライマリ インターフェイスへのポインター。 このパラメーターは NULL である可能性があります。この場合、 IOleObject::SetClientSite を使用してできるだけ早くクライアント サイトを確立するのは呼び出し元の責任です。

[in] pStg

オブジェクトに使用するストレージへのポインターと、そのオブジェクトに対して確立された既定のデータまたはプレゼンテーション キャッシュ。

[out] ppvObj

riid で要求されたインターフェイス ポインターを受け取る出力ポインター変数のアドレス。 正常に戻ると、*ppvObj には、新しく作成されたオブジェクトに要求されたインターフェイス ポインターが含まれます。

戻り値

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

リターン コード 説明
E_NOINTERFACE
指定されたインターフェイス識別子が無効です。
E_INVALIDARG
1 つ以上のパラメーターが無効です。

注釈

OleCreateLinkToFile の次の呼び出し:

OleCreateLinkToFile(lpszFileName, riid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj);

は、 OleCreateLinkToFileEx に対する次の呼び出しと同じです。

DWORD    advf = ADVF_PRIMEFIRST;
    OleCreateLinkToFileEx(lpszFileName, riid, renderopt, 1, &advf, pFormatEtc, NULL, NULL, pClientSite, pStg, ppvObj);

既存のインスタンス化関数 (OleCreateOleCreateFromFileOleCreateFromDataOleCreateLinkOleCreateLinkToFileおよび OleCreateLinkFromData) は、インスタンス化中に既定のキャッシュ位置 (渡された IStorage の '\001OlePresXXX' ストリーム内) に 1 つのプレゼンテーションまたはデータ形式のキャッシュのみを作成します。 さらに、次にオブジェクトが実行中の状態になったときに、これらのキャッシュを作成する必要があります。 ほとんどのアプリケーションでは、少なくとも 2 つのプレゼンテーション (画面とプリンター) をキャッシュする必要があり、ハンドラーとは異なる形式または場所でデータをキャッシュする必要があるため、アプリケーションは通常、オブジェクトの作成時にデータ キャッシュを準備するために、オブジェクト サーバーを複数回起動およびシャットダウンする必要があります。つまり、オブジェクトの挿入、ファイルからのオブジェクトの挿入、およびオブジェクトの貼り付け。

これらの作成関数の拡張バージョンによって、この問題が解決されます。 OleCreateExOleCreateFromFileExOleCreateFromDataExOleCreateLinkExOleCreateLinkToFileExおよび OleCreateLinkFromDataEx には、追加のオプションを示す dwFlagsADVF 列挙からキャッシュする形式の数を示す cFormatsキャッシュする各形式のアドバイス フラグを指定する cFormat が含まれています。pAdviseSinkプレゼンテーション (既定のハンドラー) またはデータ (既定以外のハンドラー) キャッシュが必要かどうかを示す場合は、iDataObject::D Advise Cookie を返す rgdwConnection と、1 つの形式ではなく形式の配列である rgFormatEtc を指定します。

オブジェクトのハンドラーによって複数のプレゼンテーションを代わりにキャッシュする必要があるコンテナーでは、これらの関数を呼び出して、cFormats の形式の数、rgAdvf の各形式の ADVF フラグ、および rgFormatEtc 内の形式のセットを指定できます。 これらのコンテナーは、pAdviseSinkNULL を渡します。

独自のすべてのデータ キャッシュまたはプレゼンテーション キャッシュを実行するコンテナーは、これらの同じ手順を実行しますが、NULL 以外の pAdviseSink を渡します。 IAdviseSink::OnDataChange 中に、オブジェクトまたはデータの独自のキャッシュまたは操作を実行します。 通常、このようなコンテナーは、ADVF_NODATAとのアドバイザリ接続を確立することはありませんが、そのような接続は防止されません。

これらの新しい関数は、OLE 複合ドキュメント用です。 これらの関数を使用すると、アプリケーションは、現在の関数で必要な繰り返しの起動と初期化の手順を回避できます。 これらは、既定のデータ キャッシュとプレゼンテーション キャッシュを使用する OLE 複合ドキュメント コンテナー アプリケーション、および基になる IDataObject::D Advise サポートからの独自のキャッシュとデータ転送を提供するアプリケーションを対象とします。

要件

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

こちらもご覧ください

Advf

FORMATETC

IAdviseSink::OnDataChange

IDataObject::D Advise

IOleCache::Cache

IOleObject::SetClientSite

IStorage

OLERENDER

OleCreate

OleCreateLinkToFile