Win32 API 日本語リファレンス
ホームSystem.Ole › IOleCache2

IOleCache2

COM
IID00000128-0000-0000-c000-000000000046継承元IOleCache自前メソッド開始 vtbl8

公式ドキュメント

オブジェクトのクライアントが、IOleCache::Cache で作成された各キャッシュを個別に更新できるようにします。

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 8 HRESULT UpdateCache(IDataObject* pDataObject, UPDFCACHE_FLAGS grfUpdf, void* pReserved)

指定されたキャッシュを更新します。このメソッドは、アプリケーションがキャッシュを厳密に制御する必要がある場合に使用します。

pDataObjectIDataObject*inキャッシュの更新元となるデータオブジェクト上の IDataObject インターフェイスへのポインター。オブジェクトハンドラーおよびインプロセスサーバーは、通常、NULL 以外の値を渡します。コンテナーアプリケーションは通常 NULL を渡し、ソースは現在実行中のオブジェクトから取得されます。
grfUpdfUPDFCACHE_FLAGSin

更新するキャッシュの種類。このパラメーターには、次の値のうち 1 つ以上を指定できます。

意味
UPDFCACHE_NODATACACHE
IOleCache::Cache の呼び出しで ADVF_NODATA を使用して作成されたキャッシュを更新します。
UPDFCACHE_ONSAVECACHE
IOleCache::Cache の呼び出しで ADVFCACHE_ONSAVE を使用して作成されたキャッシュを更新します。
UPDFCACHE_ONSTOPCACHE
IOleCache::Cache の呼び出しで ADVFCACHE_ONSTOP を使用して作成されたキャッシュを更新します。
UPDFCACHE_NORMALCACHE
キャッシュを動的に更新します(オブジェクトが OnDataChange 通知を送信する際に通常行われる方法と同じです)。
UPDFCACHE_IFBLANK
他にどのフラグが指定されているかにかかわらず、キャッシュが空の場合に更新します。
UPDFCACHE_ONLYIFBLANK
空のキャッシュのみを更新します。
UPDFCACHE_ IFBLANKORONSAVECACHE
UPDFCACHE_IFBLANKUPDFCACHE_ONSAVECACHE を OR 演算で組み合わせた場合と同等です。
UPDFCACHE_ALL
すべてのキャッシュを更新します。
UPDFCACHE_ ALLBUTNODATACACHE
IOleCache::Cache の呼び出しで ADVF_NODATA を使用して作成されたキャッシュを除く、すべてのキャッシュを更新します。これにより、ADVF_NODATA フラグを使用して作成されたキャッシュの更新を制御し、これらのキャッシュを明示的にのみ更新できます。
pReservedvoid*optionalこのパラメーターは予約されており、NULL でなければなりません。

戻り値

このメソッドは、成功した場合に S_OK を返します。その他に返される可能性のある値は次のとおりです。

リターンコード 説明
E_INVALIDARG
引数のいずれかが無効です。
E_UNEXPECTED
予期しないエラーが発生しました。
E_OUTOFMEMORY
この操作に使用できるメモリが不足しています。
OLE_E_NOTRUNNING
指定された pDataObject が実行されていません。
CACHE_E_NOCACHE_UPDATED
いずれのキャッシュも更新されませんでした。
CACHE_S_SOMECACHES_NOTUPDATED
一部のキャッシュが更新されました。
vtbl 9 HRESULT DiscardCache(DWORD dwDiscardOptions)

メモリ内にあるキャッシュを破棄します。

dwDiscardOptionsDWORDin

データを破棄する前に保存するかどうかを示す DISCARDCACHE 列挙体の値。大きなオブジェクトを描画済みで、メモリを解放する必要があるコンテナーは、DISCARDCACHE_SAVEIFDIRTY を指定することで、次にオブジェクトを描画しなければならないときのために最新のプレゼンテーションを保存できます。

埋め込みオブジェクトをアクティブ化して何らかの変更を加えた後、変更をロールバックするために OLECLOSE_NOSAVE を指定して IOleObject::Close を呼び出したコンテナーは、DISCARDCACHE_NOSAVE を指定することで、ネイティブデータとプレゼンテーションデータが同期しなくなることを防止できます。

戻り値

このメソッドは、成功した場合に S_OK を返します。その他に返される可能性のある値は次のとおりです。

リターンコード 説明
OLE_E_NOSTORAGE
キャッシュ内のデータを保存するために利用できるストレージがありません。
STG_E_MEDIUMFULL
ストレージメディアがいっぱいです。

解説(Remarks)

IOleCache2::DiscardCache メソッドは、プレゼンテーションキャッシュが現在使用しているメモリを解放することにより、メモリ不足の状態に対処するために一般的に使用されます。

破棄された後、キャッシュはディスクベースのデータに戻ることで、以降の IDataObject::GetData の呼び出しに応答します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IOleCache2 "{00000128-0000-0000-C000-000000000046}"
#usecom global IOleCache2 IID_IOleCache2 "{}"
#comfunc global IOleCache2_UpdateCache   8 sptr,int,sptr
#comfunc global IOleCache2_DiscardCache  9 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。