ISyncKnowledge
COM公式ドキュメント
レプリカが自身のアイテムストアについて持つナレッジを表します。
解説(Remarks)
ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetScopeVector、GetRangeExceptions、GetSingleItemExceptions、GetChangeUnitExceptions などのナレッジ検査メソッドから異なる値が返される場合があります。
メソッド 24
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
このナレッジを所有するレプリカの ID を取得します。
| pbReplicaId | BYTE* | inout | このナレッジを所有するレプリカの ID を返します。 |
| pcbIdSize | DWORD* | inout | pbReplicaId のバイト数を指定します。pbReplicaId が小さすぎる場合は ID の取得に必要なバイト数を返し、そうでない場合は書き込まれたバイト数を返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
pbReplicaId が小さすぎます。この場合、必要なバイト数が pcbIdSize に返されます。 |
解説(Remarks)
ナレッジは、それを所有するレプリカに対してのみ有効です。所有レプリカとは異なるレプリカのナレッジを使用するには、まず ISyncKnowledge::MapRemoteToLocal を使用してナレッジを変換する必要があります。
ナレッジオブジェクトのデータをバイト配列にシリアル化します。
| fSerializeReplicaKeyMap | BOOL | in | ナレッジに含まれる IReplicaKeyMap オブジェクトをシリアル化する場合は TRUE、そうでない場合は FALSE を指定します。 |
| pbKnowledge | BYTE* | inout | シリアル化されたナレッジデータを受け取るバイト配列。 |
| pcbKnowledge | DWORD* | inout | pbKnowledge のバイト数を指定します。pbKnowledge が小さすぎる場合はレプリカキーマップデータのシリアル化に必要なバイト数を返し、そうでない場合は書き込まれたバイト数を返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
|
pbKnowledge が小さすぎます。この場合、必要なバイト数が pbKnowledge に返されます。 |
このナレッジを所有するレプリカのティックカウントを設定します。
| ullTickCount | ULONGLONG | in | このナレッジを所有するレプリカの現在のティックカウント。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
解説(Remarks)
ナレッジを他のレプリカに送信する前に、ティックカウントは最新である必要があります。通常、プロバイダーはナレッジを送信する直前にこのメソッドを呼び出しますが、任意のタイミングで呼び出すこともできます。
指定されたアイテムの変更がこのナレッジに認識されているかどうかを示します。
| pbVersionOwnerReplicaId | BYTE* | in | 変更の発生元となったレプリカの ID。 |
| pgidItemId | BYTE* | in | 変更されたアイテムの ID。 |
| pSyncVersion | SYNC_VERSION* | in | 変更のバージョン。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定された変更はナレッジに含まれていません。 | |
指定された変更単位 (change unit) の変更がこのナレッジに認識されているかどうかを示します。
| pbVersionOwnerReplicaId | BYTE* | in | 変更単位の変更の発生元となったレプリカの ID。 |
| pbItemId | BYTE* | in | 検索対象の変更単位を含むアイテムの ID。 |
| pbChangeUnitId | BYTE* | in | 検索する変更単位の ID。 |
| pSyncVersion | SYNC_VERSION* | in | 検索する変更単位の変更のバージョン。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| 指定された変更単位の変更はナレッジに含まれています。 | |
| 指定された変更単位の変更はナレッジに含まれていません。 | |
ナレッジに含まれる変更を定義するクロックベクターを取得します。
| riid | GUID* | in | 取得するオブジェクトの IID。IID_IClockVector である必要があります。 |
| ppUnk | void** | inout | riid を実装し、ナレッジに含まれる変更を定義するクロックベクターを表すオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
解説(Remarks)
ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetScopeVector から異なる値が返される場合があります。
このナレッジに関連付けられている IReplicaKeyMap オブジェクトを取得します。
| ppReplicaKeyMap | IReplicaKeyMap** | out | このナレッジに関連付けられている IReplicaKeyMap オブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
このオブジェクトの新しいインスタンスを作成し、このオブジェクトのデータを新しいオブジェクトにコピーします。
| ppClonedKnowledge | ISyncKnowledge** | out | 新しく作成されたナレッジオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
解説(Remarks)
複製されたナレッジオブジェクトは、元のオブジェクトとは独立して使用できます。
他のレプリカのバージョンを、このナレッジを所有するレプリカと互換性のあるバージョンに変換します。
| pKnowledgeIn | ISyncKnowledge* | in | pbCurrentOwnerId に対して有効であり、pVersionIn を含むナレッジ。 |
| pbCurrentOwnerId | BYTE* | in | pVersionIn を所有するレプリカの ID。 |
| pVersionIn | SYNC_VERSION* | in | 変換するバージョン。 |
| pbNewOwnerId | BYTE* | inout | 変換後のバージョンを所有するレプリカの ID を返します。 |
| pcbIdSize | DWORD* | inout | pbNewOwnerId のバイト数を指定します。pbNewOwnerId が小さすぎる場合は ID の取得に必要なバイト数を返し、そうでない場合は書き込まれたバイト数を返します。 |
| pVersionOut | SYNC_VERSION* | inout | バージョンを返します。これは、このナレッジを所有するレプリカに対して有効となるように変換されています。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
pbNewOwnerId が小さすぎます。この場合、必要なバイト数が pcbIdSize に返されます。 |
他のレプリカのナレッジオブジェクトを、このナレッジを所有するレプリカと互換性のあるものに変換します。
| pRemoteKnowledge | ISyncKnowledge* | in | 他のレプリカが所有するナレッジオブジェクト。 |
| ppMappedKnowledge | ISyncKnowledge** | out | このナレッジを所有するレプリカで使用できるように変換されたナレッジオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
指定されたナレッジを現在のナレッジと結合します。
| pKnowledge | ISyncKnowledge* | in | 現在のナレッジと結合するナレッジ。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ポインターが無効です。 | |
指定されたアイテムのナレッジを取得します。
| pbItemId | BYTE* | in | 検索するアイテムの ID。 |
| ppKnowledgeOut | ISyncKnowledge** | out | pbItemId で指定されたアイテムのみを含むナレッジオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
指定された変更単位のナレッジを取得します。
| pbItemId | BYTE* | in | 検索対象の変更単位を含むアイテムの ID。 |
| pbChangeUnitId | BYTE* | in | 検索する変更単位の ID。 |
| ppKnowledgeOut | ISyncKnowledge** | out | pbChangeUnitId で指定された変更単位のみを含むナレッジオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
指定されたアイテム ID の範囲のナレッジを取得します。
| psrngSyncRange | SYNC_RANGE* | in | 検索するアイテム ID の範囲。 |
| ppKnowledgeOut | ISyncKnowledge** | out | psrngSyncRange で指定されたアイテム ID の範囲のみを含むナレッジオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
指定されたアイテムに関するナレッジを、ナレッジから削除します。
| pbItemId | BYTE* | in | ナレッジから削除するアイテムの ID。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
指定された変更単位に関するナレッジを、ナレッジから削除します。
| pbItemId | BYTE* | in | ナレッジから除外する変更単位を含むアイテムの ID。 |
| pbChangeUnitId | BYTE* | in | ナレッジから除外する変更単位の ID。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
指定されたナレッジがこのナレッジに認識されているかどうかを示します。
| pKnowledge | ISyncKnowledge* | in | 検索するナレッジ。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| pSyncKnowledge は認識されています。 | |
| pSyncKnowledge は認識されていません。 | |
指定されたレプリカについて、ナレッジ内の最小ティックカウントを検索します。
| pbReplicaId | BYTE* | in | 検索するレプリカの ID。 |
| pullReplicaTickCount | ULONGLONG* | inout | pbReplicaId についてのナレッジ内の最小ティックカウントを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
ナレッジに格納されている IRangeException オブジェクトを列挙できるオブジェクトを取得します。
| riid | GUID* | in | 取得するオブジェクトの IID。IID_IEnumRangeExceptions である必要があります。 |
| ppUnk | void** | inout | riid を実装し、ナレッジに含まれる IRangeException オブジェクトのリストを列挙できるオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
解説(Remarks)
ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetRangeExceptions から異なる値が返される場合があります。
ナレッジに格納されている ISingleItemException オブジェクトを列挙できるオブジェクトを取得します。
| riid | GUID* | in | 取得するオブジェクトの IID。IID_IEnumSingleItemExceptions である必要があります。 |
| ppUnk | void** | inout | riid を実装し、ナレッジに含まれる ISingleItemException オブジェクトのリストを列挙できるオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
解説(Remarks)
ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetSingleItemExceptions から異なる値が返される場合があります。
ナレッジに格納されている IChangeUnitException オブジェクトを列挙できるオブジェクトを取得します。
| riid | GUID* | in | 取得するオブジェクトの IID。IID_IEnumChangeUnitExceptions である必要があります。 |
| ppUnk | void** | inout | riid を実装し、ナレッジに含まれる IChangeUnitException オブジェクトのリストを列挙できるオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
解説(Remarks)
ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetChangeUnitExceptions から異なる値が返される場合があります。
指定されたアイテム ID に関連付けられているクロックベクターを取得します。
| pbItemId | BYTE* | in | 検索するクロックベクターに関連付けられているアイテムの ID。 |
| riid | GUID* | in | 取得するオブジェクトの IID。IID_IFeedClockVector または IID_IClockVector である必要があります。 |
| ppUnk | void** | inout | riid を実装し、pbItemId に関連付けられたクロックベクターを表すオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
指定された変更単位 ID に関連付けられているクロックベクターを取得します。
| pbItemId | BYTE* | in | 取得するクロックベクターに関連付けられている変更単位を含むアイテムの ID。 |
| pbChangeUnitId | BYTE* | in | 取得するクロックベクターに関連付けられている変更単位の ID。 |
| riid | GUID* | in | 取得するオブジェクトの IID。IID_IEnumClockVector である必要があります。 |
| ppUnk | void** | inout | riid を実装し、pbChangeUnitId に関連付けられた IClockVector オブジェクトのリストを列挙できるオブジェクトを返します。 |
戻り値
戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
このナレッジ構造のバージョンを取得します。
| pdwVersion | DWORD* | inout | このナレッジ構造のバージョンを返します。SYNC_SERIALIZATION_VERSION 列挙型の値のいずれかです。 |
戻り値
解説(Remarks)
この値は、ナレッジ構造自体のバージョンです。内部のナレッジ構造が変更されると、このメソッドが返すバージョンも変更されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISyncKnowledge "{615BBB53-C945-4203-BF4B-2CB65919A0AA}" #usecom global ISyncKnowledge IID_ISyncKnowledge "{}" #comfunc global ISyncKnowledge_GetOwnerReplicaId 3 var,var #comfunc global ISyncKnowledge_Serialize 4 int,var,var #comfunc global ISyncKnowledge_SetLocalTickCount 5 int64 #comfunc global ISyncKnowledge_ContainsChange 6 var,var,var #comfunc global ISyncKnowledge_ContainsChangeUnit 7 var,var,var,var #comfunc global ISyncKnowledge_GetScopeVector 8 var,sptr #comfunc global ISyncKnowledge_GetReplicaKeyMap 9 sptr #comfunc global ISyncKnowledge_Clone 10 sptr #comfunc global ISyncKnowledge_ConvertVersion 11 sptr,var,var,var,var,var #comfunc global ISyncKnowledge_MapRemoteToLocal 12 sptr,sptr #comfunc global ISyncKnowledge_Union 13 sptr #comfunc global ISyncKnowledge_ProjectOntoItem 14 var,sptr #comfunc global ISyncKnowledge_ProjectOntoChangeUnit 15 var,var,sptr #comfunc global ISyncKnowledge_ProjectOntoRange 16 var,sptr #comfunc global ISyncKnowledge_ExcludeItem 17 var #comfunc global ISyncKnowledge_ExcludeChangeUnit 18 var,var #comfunc global ISyncKnowledge_ContainsKnowledge 19 sptr #comfunc global ISyncKnowledge_FindMinTickCountForReplica 20 var,var #comfunc global ISyncKnowledge_GetRangeExceptions 21 var,sptr #comfunc global ISyncKnowledge_GetSingleItemExceptions 22 var,sptr #comfunc global ISyncKnowledge_GetChangeUnitExceptions 23 var,sptr #comfunc global ISyncKnowledge_FindClockVectorForItem 24 var,var,sptr #comfunc global ISyncKnowledge_FindClockVectorForChangeUnit 25 var,var,var,sptr #comfunc global ISyncKnowledge_GetVersion 26 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ISyncKnowledge "{615BBB53-C945-4203-BF4B-2CB65919A0AA}" #usecom global ISyncKnowledge IID_ISyncKnowledge "{}" #comfunc global ISyncKnowledge_GetOwnerReplicaId 3 sptr,sptr #comfunc global ISyncKnowledge_Serialize 4 int,sptr,sptr #comfunc global ISyncKnowledge_SetLocalTickCount 5 int64 #comfunc global ISyncKnowledge_ContainsChange 6 sptr,sptr,sptr #comfunc global ISyncKnowledge_ContainsChangeUnit 7 sptr,sptr,sptr,sptr #comfunc global ISyncKnowledge_GetScopeVector 8 sptr,sptr #comfunc global ISyncKnowledge_GetReplicaKeyMap 9 sptr #comfunc global ISyncKnowledge_Clone 10 sptr #comfunc global ISyncKnowledge_ConvertVersion 11 sptr,sptr,sptr,sptr,sptr,sptr #comfunc global ISyncKnowledge_MapRemoteToLocal 12 sptr,sptr #comfunc global ISyncKnowledge_Union 13 sptr #comfunc global ISyncKnowledge_ProjectOntoItem 14 sptr,sptr #comfunc global ISyncKnowledge_ProjectOntoChangeUnit 15 sptr,sptr,sptr #comfunc global ISyncKnowledge_ProjectOntoRange 16 sptr,sptr #comfunc global ISyncKnowledge_ExcludeItem 17 sptr #comfunc global ISyncKnowledge_ExcludeChangeUnit 18 sptr,sptr #comfunc global ISyncKnowledge_ContainsKnowledge 19 sptr #comfunc global ISyncKnowledge_FindMinTickCountForReplica 20 sptr,sptr #comfunc global ISyncKnowledge_GetRangeExceptions 21 sptr,sptr #comfunc global ISyncKnowledge_GetSingleItemExceptions 22 sptr,sptr #comfunc global ISyncKnowledge_GetChangeUnitExceptions 23 sptr,sptr #comfunc global ISyncKnowledge_FindClockVectorForItem 24 sptr,sptr,sptr #comfunc global ISyncKnowledge_FindClockVectorForChangeUnit 25 sptr,sptr,sptr,sptr #comfunc global ISyncKnowledge_GetVersion 26 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。