ISyncKnowledge2
COM公式ドキュメント
レプリカが自身のアイテムストアについて保持しているナレッジに関する追加情報を表します。
解説(Remarks)
ISyncKnowledge2 オブジェクトは、ISyncKnowledge オブジェクトの QueryInterface メソッドに IID_ISyncKnowledge2 を渡すことで取得できます。
メソッド 14
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
プロバイダーの ID 形式スキーマを取得します。(ISyncKnowledge2.GetIdParameters)
| pIdParameters | ID_PARAMETERS* | inout | プロバイダーの ID 形式スキーマ。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
pIdParameters の dwSize メンバーが sizeof(ID_PARAMETERS) と一致しません。
|
|
| 無効なポインターです。 |
このオブジェクトに含まれるすべてのアイテムについて、指定された変更単位のセットに関するナレッジを返します。
| ppColumns | BYTE** | in | 検索する変更単位 ID のセット。 |
| count | DWORD | in | ppColumns に含まれる変更単位 ID の数。 |
| ppiKnowledgeOut | ISyncKnowledge2** | out | このオブジェクトに含まれるすべてのアイテムについて、ppColumns で指定された変更単位のみを含むナレッジオブジェクト。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| count が 0 です。 | |
| 無効なポインターです。 | |
|
ppColumns に含まれる変更単位 ID の形式が、プロバイダーの形式スキーマで指定された形式ではありません。 |
解説(Remarks)
ProjectOntoColumnSet は ISyncKnowledge::ProjectOntoChangeUnit とは異なります。ProjectOntoColumnSet は、ナレッジオブジェクトに含まれるすべてのアイテムについて、指定された変更単位のセットに関する情報を含むナレッジオブジェクトを返します。ProjectOntoChangeUnit は、単一のアイテムに含まれる単一の変更単位に関する情報を含むナレッジオブジェクトを返します。
指定されたバージョンとシリアル化オプションに基づいて、ナレッジオブジェクトのデータをバイト配列にシリアル化します。
| targetFormatVersion | SYNC_SERIALIZATION_VERSION | in | シリアル化されたナレッジは、このバージョンと互換性を持ちます。 |
| dwFlags | DWORD | in | オブジェクトのシリアル化方法に関する追加情報を指定するオプション。0、または SYNC_SERIALIZE フラグで指定される値の組み合わせである必要があります (「解説」を参照)。0 を指定した場合、レプリカキーマップはシリアル化されたナレッジデータに含まれません。 |
| pbBuffer | BYTE* | inout | シリアル化されたナレッジオブジェクトのデータは、このバッファーにシリアル化されます。 |
| pdwSerializedSize | DWORD* | inout | pBuffer のバイト数を指定します。pBuffer が小さすぎる場合はナレッジデータのシリアル化に必要なバイト数を、それ以外の場合は書き込まれたバイト数を返します。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 無効なポインターです。 | |
|
pBuffer が小さすぎます。この場合、必要なバイト数が pdwSerializedSize に返されます。 |
|
targetFormatVersion の値がオブジェクトのバージョンより大きいか、オブジェクトに targetFormatVersion と互換性のない要素が含まれています。 |
解説(Remarks)
メモ SYNC_SERIALIZE フラグは次のように定義されています。#define SYNC_SERIALIZE_REPLICA_KEY_MAP 0x00000001
SYNC_SERIALIZE_REPLICA_KEY_MAP の値は、レプリカキーマップがシリアル化されたナレッジデータに含まれることを示します。
フラグに SYNC_SERIALIZE_REPLICA_KEY_MAP を指定すると、IReplicaKeyMap オブジェクトがナレッジデータとともにシリアル化されます。このフラグを指定しない場合は、ナレッジオブジェクトを逆シリアル化できるようにするため、IReplicaKeyMap のデータを他の方法で保存しておく必要があります。
targetFormatVersion の値はシリアル化されたナレッジデータの形式を決定し、Microsoft Sync Framework のバージョンを指します。Microsoft Sync Framework を使用して同期プロバイダーを構築する際に必要となる作業の概要については、Options for Building a Synchronization Provider を参照してください。
このナレッジには含まれず、指定されたナレッジに含まれるアイテム ID のうち、最小のものを返します。
| piSyncKnowledge | ISyncKnowledge2* | in | pbItemId に返されるアイテム ID は、piSyncKnowledge に含まれます。 |
| pbItemId | BYTE* | inout | piSyncKnowledge に含まれ、このナレッジには含まれないアイテム ID のうち、最小のもの。 |
| pcbItemIdSize | DWORD* | inout | pbItemId のバイト数。pbItemId が小さすぎる場合は ID の取得に必要なバイト数を、それ以外の場合は書き込まれたバイト数を返します。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| piSyncKnowledge はこのナレッジに含まれています。この場合、返すべき未包含のアイテム ID はありません。 | |
| piSyncKnowledge の ID 形式スキーマが、このナレッジの ID 形式スキーマと異なります。 | |
| 無効なポインターです。 | |
|
pbItemId が小さすぎます。この場合、必要なバイト数が pcbItemIdSize に返されます。 |
ナレッジオブジェクトの内容を取得するために使用できるオブジェクトを返します。
| riid | GUID* | in | 要求するインスペクターの IID。IID_ICoreFragmentInspector である必要があります。 |
| ppiInspector | void** | inout | riid を実装し、ナレッジオブジェクトの内容を取得できるオブジェクト。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| riid が IID_ICoreFragmentInspector ではありません。 | |
| 無効なポインターです。 |
このオブジェクトと共に使用できる Microsoft Sync Framework コンポーネントの、サポートされる最小バージョンを取得します。
| pVersion | SYNC_SERIALIZATION_VERSION* | inout | このオブジェクトと共に使用できる Microsoft Sync Framework コンポーネントの、サポートされる最小バージョン。 |
戻り値
解説(Remarks)
Microsoft Sync Framework を使用して同期プロバイダーを構築する際に必要となる作業の概要については、Options for Building a Synchronization Provider を参照してください。
このオブジェクトに含まれる、指定された統計データを取得します。
| which | SYNC_STATISTICS | in | 取得する統計情報を指定します。 |
| pValue | DWORD* | inout | 指定された統計データ。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| which が SYNC_STATISTICS 列挙体のメンバーではありません。 | |
| 無効なポインターです。 |
指定されたアイテムに関する指定されたナレッジが、このナレッジによって把握されているかどうかを示します。
| pKnowledge | ISyncKnowledge* | in | pbItemId に関するナレッジを含むナレッジオブジェクト。 |
| pbItemId | BYTE* | in | 検索するアイテムの ID。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| このオブジェクトは、pbItemId について pKnowledge が把握しているナレッジを含んでいます。 | |
| このオブジェクトは、pbItemId について pKnowledge が把握しているナレッジを含んでいません。 | |
| 無効なポインターです。 | |
|
pbItemId がプロバイダーで指定された形式ではありません。 |
解説(Remarks)
同じ結果を得る別の方法として、pbItemId を pKnowledge の ISyncKnowledge::ProjectOntoItem メソッドに渡し、その結果として得られた射影ナレッジを、このオブジェクトの ISyncKnowledge::ContainsKnowledge メソッドに渡す方法があります。
指定された変更単位に関する指定されたナレッジが、このナレッジによって把握されているかどうかを示します。
| pKnowledge | ISyncKnowledge* | in | pbChangeUnitId に関するナレッジを含むナレッジオブジェクト。 |
| pbItemId | BYTE* | in | 検索する変更単位を含むアイテムの ID。 |
| pbChangeUnitId | BYTE* | in | 検索する変更単位の ID。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| このオブジェクトは、pbChangeUnitId について pKnowledge が把握しているナレッジを含んでいます。 | |
| このオブジェクトは、pbChangeUnitId について pKnowledge が把握しているナレッジを含んでいません。 | |
| 無効なポインターです。 | |
|
pbChangeUnitId がプロバイダーで指定された形式ではありません。 |
解説(Remarks)
同じ結果を得る別の方法として、pbItemId と pbChangeUnitId を pKnowledge の ISyncKnowledge::ContainsChangeUnit メソッドに渡し、その結果として得られた射影ナレッジを、このオブジェクトの ISyncKnowledge::ContainsKnowledge メソッドに渡す方法があります。
テンプレートナレッジが指定されたフラグメントに対する前提ナレッジを含んでいる場合に、テンプレートナレッジで指定されたナレッジフラグメントに関するナレッジを返します。
| pPrerequisiteKnowledge | ISyncKnowledge* | in | ppProjectedKnowledge にナレッジが追加されるために、pTemplateKnowledge が含んでいる必要があるナレッジを指定します。 |
| pTemplateKnowledge | ISyncKnowledge* | in | ppProjectedKnowledge に追加するナレッジフラグメントのセットを指定します。 |
| ppProjectedKnowledge | ISyncKnowledge** | out | 指定されたフラグメントについて pTemplateKnowledge が pPrerequisiteKnowledge に含まれるナレッジを含んでいる場合に、pTemplateKnowledge で指定されたナレッジフラグメントを含むナレッジオブジェクト。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 無効なポインターです。 | |
|
pPrerequisiteKnowledge または pTemplateKnowledge に含まれる ID 形式スキーマが、このオブジェクトの ID 形式スキーマと異なります。 |
解説(Remarks)
ppProjectedKnowledge に返すナレッジを計算するため、このメソッドは pTemplateKnowledge に含まれるナレッジフラグメントを列挙します。pTemplateKnowledge 内の各ナレッジフラグメントについて、そのフラグメントに関して pPrerequisiteKnowledge が把握しているナレッジが pTemplateKnowledge に含まれているかどうかを確認します。あるフラグメントについて把握されている前提ナレッジが pTemplateKnowledge に含まれている場合、そのフラグメントについてこのオブジェクトが把握しているナレッジが ppProjectedKnowledge に追加されます。あるフラグメントについて把握されている前提ナレッジが pTemplateKnowledge に含まれていない場合、ppProjectedKnowledge にはそのフラグメントに関するナレッジは含まれません。
このオブジェクトには含まれるが、指定されたナレッジには含まれないナレッジを返します。
| pSyncKnowledge | ISyncKnowledge* | in | 補集合演算の結果を計算するために、このオブジェクトから取り除くナレッジ。 |
| ppComplementedKnowledge | ISyncKnowledge** | out | このオブジェクトには含まれるが、指定されたナレッジには含まれないナレッジ。 |
戻り値
解説(Remarks)
補集合演算は、概念的には減算操作と考えることができます。指定されたナレッジがこのオブジェクトのナレッジから差し引かれ、その結果が返されます。
指定されたナレッジがこのナレッジと交差するかどうかを示します。
| pSyncKnowledge | ISyncKnowledge* | in | 交差があるかどうかを判断するために、このオブジェクトと照合されるナレッジ。 |
戻り値
戻り値には、次の表に示す値が含まれます (ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| 指定されたナレッジはこのナレッジと交差します。 | |
| 指定されたナレッジはこのナレッジと交差しません。 | |
| 無効なポインターです。 |
高速な比較に使用できる、このナレッジオブジェクトの軽量な読み取り専用表現を取得します。
| ppKnowledgeCookie | IUnknown** | out | 高速な比較に使用できる、このナレッジオブジェクトの軽量な読み取り専用表現。 |
戻り値
解説(Remarks)
比較操作のパフォーマンスが特に重要な場合、ナレッジ Cookie を ISyncKnowledge2::CompareToKnowledgeCookie と組み合わせて使用することで、他のナレッジオブジェクトとの高速な比較を行えます。
指定されたナレッジ Cookie とこのナレッジオブジェクトとの間で高速な比較を実行します。
| pKnowledgeCookie | IUnknown* | in | このオブジェクトと比較するナレッジ Cookie。 |
| pResult | KNOWLEDGE_COOKIE_COMPARISON_RESULT* | inout | 比較の結果。 |
戻り値
解説(Remarks)
このメソッドは、ナレッジの比較操作のパフォーマンスが特に重要な場合に使用できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISyncKnowledge2 "{ED0ADDC0-3B4B-46A1-9A45-45661D2114C8}" #usecom global ISyncKnowledge2 IID_ISyncKnowledge2 "{}" #comfunc global ISyncKnowledge2_GetIdParameters 27 var #comfunc global ISyncKnowledge2_ProjectOntoColumnSet 28 var,int,sptr #comfunc global ISyncKnowledge2_SerializeWithOptions 29 int,int,var,var #comfunc global ISyncKnowledge2_GetLowestUncontainedId 30 sptr,var,var #comfunc global ISyncKnowledge2_GetInspector 31 var,sptr #comfunc global ISyncKnowledge2_GetMinimumSupportedVersion 32 var #comfunc global ISyncKnowledge2_GetStatistics 33 int,var #comfunc global ISyncKnowledge2_ContainsKnowledgeForItem 34 sptr,var #comfunc global ISyncKnowledge2_ContainsKnowledgeForChangeUnit 35 sptr,var,var #comfunc global ISyncKnowledge2_ProjectOntoKnowledgeWithPrerequisite 36 sptr,sptr,sptr #comfunc global ISyncKnowledge2_Complement 37 sptr,sptr #comfunc global ISyncKnowledge2_IntersectsWithKnowledge 38 sptr #comfunc global ISyncKnowledge2_GetKnowledgeCookie 39 sptr #comfunc global ISyncKnowledge2_CompareToKnowledgeCookie 40 sptr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ISyncKnowledge2 "{ED0ADDC0-3B4B-46A1-9A45-45661D2114C8}" #usecom global ISyncKnowledge2 IID_ISyncKnowledge2 "{}" #comfunc global ISyncKnowledge2_GetIdParameters 27 sptr #comfunc global ISyncKnowledge2_ProjectOntoColumnSet 28 sptr,int,sptr #comfunc global ISyncKnowledge2_SerializeWithOptions 29 int,int,sptr,sptr #comfunc global ISyncKnowledge2_GetLowestUncontainedId 30 sptr,sptr,sptr #comfunc global ISyncKnowledge2_GetInspector 31 sptr,sptr #comfunc global ISyncKnowledge2_GetMinimumSupportedVersion 32 sptr #comfunc global ISyncKnowledge2_GetStatistics 33 int,sptr #comfunc global ISyncKnowledge2_ContainsKnowledgeForItem 34 sptr,sptr #comfunc global ISyncKnowledge2_ContainsKnowledgeForChangeUnit 35 sptr,sptr,sptr #comfunc global ISyncKnowledge2_ProjectOntoKnowledgeWithPrerequisite 36 sptr,sptr,sptr #comfunc global ISyncKnowledge2_Complement 37 sptr,sptr #comfunc global ISyncKnowledge2_IntersectsWithKnowledge 38 sptr #comfunc global ISyncKnowledge2_GetKnowledgeCookie 39 sptr #comfunc global ISyncKnowledge2_CompareToKnowledgeCookie 40 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。