IReplicaMetadata::GetFullEnumerationChangeBatch
指定した最小値以上の ID の項目の項目メタデータが含まれている変更バッチを、完全な列挙の一部として取得します。
HRESULT GetFullEnumerationChangeBatch(
DWORD dwBatchSize,
const BYTE * pbLowerEnumerationBound,
ISyncKnowledge * pSyncKnowledge,
ISyncFullEnumerationChangeBatch ** ppSyncChangeBatch);
パラメーター
- dwBatchSize
[in] 返す変更バッチのサイズ。
- pbLowerEnumerationBound
[in] 項目 ID の下限。このメソッドは、この値以上の ID を持つ変更を返します。
- pSyncKnowledge
[in] 同期先レプリカのナレッジ。
- ppSyncChangeBatch
[out] 変更のバッチを返します。
戻り値
S_OK
E_POINTER
dwBatchSize が 0 の場合は E_INVALIDARG。
解説
このメソッドを使用すると、同期プロバイダーは IKnowledgeSyncProvider::GetFullEnumerationChangeBatch メソッドを実装できるようになります。このメソッドは、忘れられたナレッジの復旧時に呼び出されます。
プロバイダーは、このメソッドを呼び出す前に、メタデータ ストア内のバージョンにローカルの変更 (削除など) がすべて反映されていることを確認する必要があります。これを行うには、メタデータを明示的にメンテナンスすることによって、項目を列挙し、そのメタデータを更新します。
ISqlSyncMetadataStore から使用できるこのクラスの実装は、変更をグローバル ID の順に変更バッチに追加します。
ISqlSyncMetadataStore を使用することによって可能になるこのクラスの実装では、pSyncKnowledge に含まれていない、ID が pbLowerEnumerationBound より小さい項目もすべて返されます。
ISqlSyncMetadataStore から使用できるこのクラスの実装は、送信する変更がこれ以上ない場合に返される変更バッチに対して SetLastBatch を呼び出します。
実装に関するメモ
このメソッドは、項目 ID が pbLowerEnumerationBound 以上の変更を項目 ID の順に列挙する必要があります。これにより、Sync Framework は、同期先プロバイダーのどの項目が同期元プロバイダーによって削除され、忘れられているかを特定できます。
このバッチの後で送信する変更がない場合は、返される変更バッチに対して SetLastBatch を呼び出す必要があります。そうしないと、次の変更バッチを取得するために、Sync Framework によって IKnowledgeSyncProvider::GetFullEnumerationChangeBatch が再度呼び出されます。
項目変更に関するメタデータと共に項目データを送信するプロバイダーの場合は、pSyncKnowledge を使用すると、項目データを送信する必要があるかどうかを判断できます。項目の変更が pSyncKnowledge に含まれている場合は、項目データを送信する必要はありません。