ADVF 列挙 (objidl.h)

データの変更のキャッシュと通知を制御するフラグ。

構文

typedef enum tagADVF {
  ADVF_NODATA = 1,
  ADVF_PRIMEFIRST = 2,
  ADVF_ONLYONCE = 4,
  ADVF_DATAONSTOP = 64,
  ADVFCACHE_NOHANDLER = 8,
  ADVFCACHE_FORCEBUILTIN = 16,
  ADVFCACHE_ONSAVE = 32
} ADVF;

定数

 
ADVF_NODATA
値: 1
データ アドバイザリ接続 (IDataObject::D Advise または IDataAdviseHolder::Advise) の場合、このフラグは 、IAdviseSink::OnDataChange を呼び出すときにデータを送信しないようにデータ オブジェクトに要求します。 変更通知の受信者は、後で IDataObject::GetData を呼び出してデータを要求できます。 データ オブジェクトは、STGMEDIUM パラメーターにTYMED_NULLを渡すことによって要求を受け入れるか、またはデータを提供できます。 たとえば、データ オブジェクトには複数のアドバイザリ接続があり、指定されたADVF_NODATAのすべてではない場合、オブジェクトはすべての接続に同じ通知を送信する可能性があります。 コンテナーの要求に関係なく、IAdviseSink の実装は STGMEDIUM パラメーターをチェックする必要があります。これは、メディアがTYMED_NULLされていない場合に解放する責任があるためです。

キャッシュ接続 (IOleCache::Cache) の場合、このフラグは、実行中のオブジェクトに加えられた変更によってキャッシュを更新しないことを要求します。 代わりに、コンテナーは IOleCache::SetData を明示的に呼び出してキャッシュを更新します。 この状況は、通常、オブジェクトの象徴的な側面がキャッシュされている場合に発生します。

ADVF_NODATAはビュー アドバイザリ接続 (IViewObject::SetAdvise) の有効なフラグではなく、E_INVALIDARGを返します。
ADVF_PRIMEFIRST
値: 2
IAdviseSink::OnDataChange (データ接続またはビュー アドバイザリ接続の場合) またはキャッシュの更新 (キャッシュ接続用) を最初に呼び出す前に、オブジェクトがデータまたはビューの変更を待機しないように要求します。 ADVF_ONLYONCEで使用されるこのパラメーターは、非同期 IDataObject::GetData 呼び出しを提供します。
ADVF_ONLYONCE
値: 4
コネクションを削除する前に、オブジェクトが 1 回だけ変更通知またはキャッシュの更新を行うよう要求します。

ADVF_ONLYONCEは、1 つのデータまたはビュー通知を送信した後、アドバイザリ接続を自動的に削除します。 アドバイザリ シンクは 、IAdviseSink 呼び出しを 1 つだけ受け取ります。 接続が確立されると、0 以外の接続識別子が返されるため、呼び出し元は、最初の変更通知の前に接続を削除するために使用できます。

データ変更通知の場合、ADVF_ONLYONCEとADVF_PRIMEFIRSTの組み合わせは、実質的に非同期 IDataObject::GetData 呼び出しを提供します。

キャッシュと共に使用する場合、ADVF_ONLYONCEは、最初の IAdviseSink::OnDataChange 通知を受信したときに、キャッシュを 1 回だけ更新します。 更新が完了すると、オブジェクトとキャッシュの間のアドバイザリ接続が切断されます。 アドバイザリ接続のソース オブジェクトは 、Release メソッドを呼び出します。
ADVF_DATAONSTOP
値: 64
データのアドバイザリ コネクションの場合に、データへのアクセシビリティを確保します。 このフラグは、データ オブジェクトが閉じるときに を呼び出す必要があることを示し、呼び出しでデータを提供します。 通常、この値は ADVF_NODATA と組み合わせて使用されます。 IAdviseSink::OnDataChange が値でない場合、データのない OnDataChange 呼び出しがシンクに到達するまでに、ソースがシャットダウンを完了し、データにアクセスできない可能性があります。 この値を指定するシンクは、 OnDataChange で渡されるデータを受け入れる必要があります。渡される場合は、取得する機会がもう 1 つ得られない可能性があるためです。

キャッシュ接続の場合、このフラグは、オブジェクトがオブジェクトクロージャの一部としてキャッシュを更新する必要があることを示します。

ADVF_DATAONSTOPは、ビュー アドバイザリ接続の有効なフラグではありません。
ADVFCACHE_NOHANDLER
値: 8
ADVFCACHE_FORCEBUILTINのシノニム。これは、より頻繁に使用されます。
ADVFCACHE_FORCEBUILTIN
値: 16
この値は、オブジェクトの描画を実行する DLL オブジェクト アプリケーションおよびオブジェクト ハンドラーによって使用されます。 ADVFCACHE_FORCEBUILTINは、プレゼンテーション データをキャッシュして、キャッシュにプレゼンテーションがあることを確認するように OLE に指示します。 この値は、データ接続またはビュー アドバイザリ接続の有効なフラグではありません。 キャッシュ接続の場合、このフラグは、OLE (または基になるオペレーティング システム) に付属するコードのみを IDataObject::GetData または IViewObject::D raw で生成するために必要なデータをキャッシュします。 この値を指定することで、コンテナーは、オブジェクトまたはハンドラー コードが使用できない場合でも、データを確実に取得できます。
ADVFCACHE_ONSAVE
値: 32
キャッシュ コネクションの場合、このフラグは、キャッシュを格納しているオブジェクトの保存時にだけ、キャッシュされている表示を更新します。 キャッシュは、OLE オブジェクトが実行中の状態から読み込まれた状態に戻ったときにも更新されます (後続の保存操作ではオブジェクトを再実行する必要があるため)。 この値は、データ接続またはビュー アドバイザリ接続の有効なフラグではありません。

解説

データ接続またはビュー アドバイザリ接続の場合、コンテナーは、IAdviseSink インスタンスと IDataObject インスタンスまたは IViewObject インスタンスの間の接続を設定するときに ADVF 定数を使用します。 これらの接続は、 IDataObject::D AdviseIDataAdviseHolder::Advise、または IViewObject::SetAdvise メソッドを使用して設定されます。

キャッシュ接続の場合、定数は IOleCache::Cache メソッドで指定され、オブジェクトがキャッシュを更新する方法に関するコンテナーの要求を示します。

これらの定数は、STATDATA 構造体の advf メンバーでも使用されます。 この構造体は、列挙された接続を記述するために IEnumSTATDATA によって使用され、 advf メンバーはアドバイザリまたはキャッシュ接続が確立されたときに指定されたフラグを示します。 IOleObject::EnumAdvise 列挙子に STATDATA を使用すると、advf メンバーは不確定になります。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header objidl.h

関連項目

IDataAdviseHolder

Idataobject

IEnumSTATDATA

IOleCache

IViewObject