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 列挙からの値の組み合わせです。 この配列の各要素は、pAdviseSink が NULL であるか NULL 以外であるかに応じて、IOleCache::Cache または IDataObject::D Advise の呼び出しに advf パラメーターとして渡されます (以下を参照)。 それ以外のすべての場合、このパラメーターは NULL である必要があります。
[in] rgFormatEtc
renderopt がOLERENDER_FORMATされている場合は、FORMATETC 構造体の配列を指します。 pAdviseSink が NULL の場合、この配列の各要素は pFormatEtc パラメーターとして、オブジェクトの IOleCache::Cache の呼び出しに渡されます。 これにより、オブジェクトのインプロセス ハンドラー (通常は既定のハンドラー) によって管理されるデータとプレゼンテーション キャッシュに、プレゼンテーションまたはその他のキャッシュ可能なデータが設定されます。 pAdviseSink が NULL 以外の場合、この配列の各要素は pFormatEtc パラメーターとして IDataObject::D Advise の呼び出しに渡されます。 これにより、呼び出し元 (通常は OLE コンテナー) は、オブジェクトから受信したデータの独自のキャッシュまたは処理を実行できます。
[in] lpAdviseSink
renderopt がOLERENDER_FORMATされている場合は、有効な IAdviseSink ポインター (カスタム キャッシュまたはデータ アドバイスの処理を示す) または NULL (データ形式の既定のキャッシュを示す) のいずれかを指定できます。
[out] rgdwConnection
IDataObject::D Advise を使用して各アドバイザリ接続に IAdviseSink インターフェイスが登録されたときに返される dwConnection 値の配列を返す場所。返されるアドバイザリ接続が必要ない場合は NULL。 pAdviseSink が NULL の場合、このパラメーターは NULL である必要があります。
[in] pClientSite
オブジェクトがコンテナーからサービスを要求するプライマリ インターフェイスへのポインター。 このパラメーターは NULL である可能性があります。この場合、 IOleObject::SetClientSite を使用してできるだけ早くクライアント サイトを確立するのは呼び出し元の責任です。
[in] pStg
オブジェクトに使用するストレージへのポインターと、そのオブジェクトに対して確立された既定のデータまたはプレゼンテーション キャッシュ。
[out] ppvObj
riid で要求されたインターフェイス ポインターを受け取る出力ポインター変数のアドレス。 正常に戻ると、*ppvObj には、新しく作成されたオブジェクトに要求されたインターフェイス ポインターが含まれます。
戻り値
この関数は、成功したS_OKを返します。 その他の使用可能な値は次のとおりです。
リターン コード | 説明 |
---|---|
|
指定されたインターフェイス識別子が無効です。 |
|
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);
既存のインスタンス化関数 (OleCreate、 OleCreateFromFile、 OleCreateFromData、 OleCreateLink、 OleCreateLinkToFile、 および OleCreateLinkFromData) は、インスタンス化中に既定のキャッシュ位置 (渡された IStorage の '\001OlePresXXX' ストリーム内) に 1 つのプレゼンテーションまたはデータ形式のキャッシュのみを作成します。 さらに、次にオブジェクトが実行中の状態になったときに、これらのキャッシュを作成する必要があります。 ほとんどのアプリケーションでは、少なくとも 2 つのプレゼンテーション (画面とプリンター) をキャッシュする必要があり、ハンドラーとは異なる形式または場所でデータをキャッシュする必要があるため、アプリケーションは通常、オブジェクトの作成時にデータ キャッシュを準備するために、オブジェクト サーバーを複数回起動およびシャットダウンする必要があります。つまり、オブジェクトの挿入、ファイルからのオブジェクトの挿入、およびオブジェクトの貼り付け。
これらの作成関数の拡張バージョンによって、この問題が解決されます。 OleCreateEx、OleCreateFromFileEx、OleCreateFromDataEx、OleCreateLinkEx、OleCreateLinkToFileEx、および OleCreateLinkFromDataEx には、追加のオプションを示す dwFlags、ADVF 列挙からキャッシュする形式の数を示す cFormats、キャッシュする各形式のアドバイス フラグを指定する cFormat が含まれています。pAdviseSinkプレゼンテーション (既定のハンドラー) またはデータ (既定以外のハンドラー) キャッシュが必要かどうかを示す場合は、iDataObject::D Advise Cookie を返す rgdwConnection と、1 つの形式ではなく形式の配列である rgFormatEtc を指定します。
オブジェクトのハンドラーによって複数のプレゼンテーションを代わりにキャッシュする必要があるコンテナーでは、これらの関数を呼び出して、cFormats の形式の数、rgAdvf の各形式の ADVF フラグ、および rgFormatEtc 内の形式のセットを指定できます。 これらのコンテナーは、pAdviseSink に NULL を渡します。
独自のすべてのデータ キャッシュまたはプレゼンテーション キャッシュを実行するコンテナーは、これらの同じ手順を実行しますが、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 |