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

ISyncKnowledge

COM
IID615bbb53-c945-4203-bf4b-2cb65919a0aa継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

レプリカが自身のアイテムストアについて持つナレッジを表します。

解説(Remarks)

ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetScopeVectorGetRangeExceptionsGetSingleItemExceptionsGetChangeUnitExceptions などのナレッジ検査メソッドから異なる値が返される場合があります。

メソッド 24

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

vtbl 3 HRESULT GetOwnerReplicaId(BYTE* pbReplicaId, DWORD* pcbIdSize)

このナレッジを所有するレプリカの ID を取得します。

pbReplicaIdBYTE*inoutこのナレッジを所有するレプリカの ID を返します。
pcbIdSizeDWORD*inoutpbReplicaId のバイト数を指定します。pbReplicaId が小さすぎる場合は ID の取得に必要なバイト数を返し、そうでない場合は書き込まれたバイト数を返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
HRESULT_FROM_WIN32(ERROR_MORE_DATA)
pbReplicaId が小さすぎます。この場合、必要なバイト数が pcbIdSize に返されます。

解説(Remarks)

ナレッジは、それを所有するレプリカに対してのみ有効です。所有レプリカとは異なるレプリカのナレッジを使用するには、まず ISyncKnowledge::MapRemoteToLocal を使用してナレッジを変換する必要があります。

vtbl 4 HRESULT Serialize(BOOL fSerializeReplicaKeyMap, BYTE* pbKnowledge, DWORD* pcbKnowledge)

ナレッジオブジェクトのデータをバイト配列にシリアル化します。

fSerializeReplicaKeyMapBOOLinナレッジに含まれる IReplicaKeyMap オブジェクトをシリアル化する場合は TRUE、そうでない場合は FALSE を指定します。
pbKnowledgeBYTE*inoutシリアル化されたナレッジデータを受け取るバイト配列。
pcbKnowledgeDWORD*inoutpbKnowledge のバイト数を指定します。pbKnowledge が小さすぎる場合はレプリカキーマップデータのシリアル化に必要なバイト数を返し、そうでない場合は書き込まれたバイト数を返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
E_INVALIDARG
E_OUTOFMEMORY
HRESULT_FROM_WIN32(ERROR_MORE_DATA)
pbKnowledge が小さすぎます。この場合、必要なバイト数が pbKnowledge に返されます。
vtbl 5 HRESULT SetLocalTickCount(ULONGLONG ullTickCount)

このナレッジを所有するレプリカのティックカウントを設定します。

ullTickCountULONGLONGinこのナレッジを所有するレプリカの現在のティックカウント。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
E_UNEXPECTED

解説(Remarks)

ナレッジを他のレプリカに送信する前に、ティックカウントは最新である必要があります。通常、プロバイダーはナレッジを送信する直前にこのメソッドを呼び出しますが、任意のタイミングで呼び出すこともできます。

vtbl 6 HRESULT ContainsChange(BYTE* pbVersionOwnerReplicaId, BYTE* pgidItemId, SYNC_VERSION* pSyncVersion)

指定されたアイテムの変更がこのナレッジに認識されているかどうかを示します。

pbVersionOwnerReplicaIdBYTE*in変更の発生元となったレプリカの ID。
pgidItemIdBYTE*in変更されたアイテムの ID。
pSyncVersionSYNC_VERSION*in変更のバージョン。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
S_FALSE
指定された変更はナレッジに含まれていません。
E_INVALIDARG
vtbl 7 HRESULT ContainsChangeUnit(BYTE* pbVersionOwnerReplicaId, BYTE* pbItemId, BYTE* pbChangeUnitId, SYNC_VERSION* pSyncVersion)

指定された変更単位 (change unit) の変更がこのナレッジに認識されているかどうかを示します。

pbVersionOwnerReplicaIdBYTE*in変更単位の変更の発生元となったレプリカの ID。
pbItemIdBYTE*in検索対象の変更単位を含むアイテムの ID。
pbChangeUnitIdBYTE*in検索する変更単位の ID。
pSyncVersionSYNC_VERSION*in検索する変更単位の変更のバージョン。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
指定された変更単位の変更はナレッジに含まれています。
S_FALSE
指定された変更単位の変更はナレッジに含まれていません。
E_INVALIDARG
vtbl 8 HRESULT GetScopeVector(GUID* riid, void** ppUnk)

ナレッジに含まれる変更を定義するクロックベクターを取得します。

riidGUID*in取得するオブジェクトの IID。IID_IClockVector である必要があります。
ppUnkvoid**inoutriid を実装し、ナレッジに含まれる変更を定義するクロックベクターを表すオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_NOINTERFACE
E_OUTOFMEMORY

解説(Remarks)

ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetScopeVector から異なる値が返される場合があります。

vtbl 9 HRESULT GetReplicaKeyMap(IReplicaKeyMap** ppReplicaKeyMap)

このナレッジに関連付けられている IReplicaKeyMap オブジェクトを取得します。

ppReplicaKeyMapIReplicaKeyMap**outこのナレッジに関連付けられている IReplicaKeyMap オブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
vtbl 10 HRESULT Clone(ISyncKnowledge** ppClonedKnowledge)

このオブジェクトの新しいインスタンスを作成し、このオブジェクトのデータを新しいオブジェクトにコピーします。

ppClonedKnowledgeISyncKnowledge**out新しく作成されたナレッジオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_OUTOFMEMORY

解説(Remarks)

複製されたナレッジオブジェクトは、元のオブジェクトとは独立して使用できます。

vtbl 11 HRESULT ConvertVersion(ISyncKnowledge* pKnowledgeIn, BYTE* pbCurrentOwnerId, SYNC_VERSION* pVersionIn, BYTE* pbNewOwnerId, DWORD* pcbIdSize, SYNC_VERSION* pVersionOut)

他のレプリカのバージョンを、このナレッジを所有するレプリカと互換性のあるバージョンに変換します。

pKnowledgeInISyncKnowledge*inpbCurrentOwnerId に対して有効であり、pVersionIn を含むナレッジ。
pbCurrentOwnerIdBYTE*inpVersionIn を所有するレプリカの ID。
pVersionInSYNC_VERSION*in変換するバージョン。
pbNewOwnerIdBYTE*inout変換後のバージョンを所有するレプリカの ID を返します。
pcbIdSizeDWORD*inoutpbNewOwnerId のバイト数を指定します。pbNewOwnerId が小さすぎる場合は ID の取得に必要なバイト数を返し、そうでない場合は書き込まれたバイト数を返します。
pVersionOutSYNC_VERSION*inoutバージョンを返します。これは、このナレッジを所有するレプリカに対して有効となるように変換されています。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_OUTOFMEMORY
HRESULT_FROM_WIN32(ERROR_MORE_DATA)
pbNewOwnerId が小さすぎます。この場合、必要なバイト数が pcbIdSize に返されます。
vtbl 12 HRESULT MapRemoteToLocal(ISyncKnowledge* pRemoteKnowledge, ISyncKnowledge** ppMappedKnowledge)

他のレプリカのナレッジオブジェクトを、このナレッジを所有するレプリカと互換性のあるものに変換します。

pRemoteKnowledgeISyncKnowledge*in他のレプリカが所有するナレッジオブジェクト。
ppMappedKnowledgeISyncKnowledge**outこのナレッジを所有するレプリカで使用できるように変換されたナレッジオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
E_INVALIDARG
E_OUTOFMEMORY
vtbl 13 HRESULT Union(ISyncKnowledge* pKnowledge)

指定されたナレッジを現在のナレッジと結合します。

pKnowledgeISyncKnowledge*in現在のナレッジと結合するナレッジ。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。
E_INVALIDARG
E_OUTOFMEMORY
vtbl 14 HRESULT ProjectOntoItem(BYTE* pbItemId, ISyncKnowledge** ppKnowledgeOut)

指定されたアイテムのナレッジを取得します。

pbItemIdBYTE*in検索するアイテムの ID。
ppKnowledgeOutISyncKnowledge**outpbItemId で指定されたアイテムのみを含むナレッジオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_OUTOFMEMORY
vtbl 15 HRESULT ProjectOntoChangeUnit(BYTE* pbItemId, BYTE* pbChangeUnitId, ISyncKnowledge** ppKnowledgeOut)

指定された変更単位のナレッジを取得します。

pbItemIdBYTE*in検索対象の変更単位を含むアイテムの ID。
pbChangeUnitIdBYTE*in検索する変更単位の ID。
ppKnowledgeOutISyncKnowledge**outpbChangeUnitId で指定された変更単位のみを含むナレッジオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_OUTOFMEMORY
vtbl 16 HRESULT ProjectOntoRange(SYNC_RANGE* psrngSyncRange, ISyncKnowledge** ppKnowledgeOut)

指定されたアイテム ID の範囲のナレッジを取得します。

psrngSyncRangeSYNC_RANGE*in検索するアイテム ID の範囲。
ppKnowledgeOutISyncKnowledge**outpsrngSyncRange で指定されたアイテム ID の範囲のみを含むナレッジオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_OUTOFMEMORY
vtbl 17 HRESULT ExcludeItem(BYTE* pbItemId)

指定されたアイテムに関するナレッジを、ナレッジから削除します。

pbItemIdBYTE*inナレッジから削除するアイテムの ID。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_OUTOFMEMORY
vtbl 18 HRESULT ExcludeChangeUnit(BYTE* pbItemId, BYTE* pbChangeUnitId)

指定された変更単位に関するナレッジを、ナレッジから削除します。

pbItemIdBYTE*inナレッジから除外する変更単位を含むアイテムの ID。
pbChangeUnitIdBYTE*inナレッジから除外する変更単位の ID。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_OUTOFMEMORY
vtbl 19 HRESULT ContainsKnowledge(ISyncKnowledge* pKnowledge)

指定されたナレッジがこのナレッジに認識されているかどうかを示します。

pKnowledgeISyncKnowledge*in検索するナレッジ。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
pSyncKnowledge は認識されています。
S_FALSE
pSyncKnowledge は認識されていません。
E_INVALIDARG
vtbl 20 HRESULT FindMinTickCountForReplica(BYTE* pbReplicaId, ULONGLONG* pullReplicaTickCount)

指定されたレプリカについて、ナレッジ内の最小ティックカウントを検索します。

pbReplicaIdBYTE*in検索するレプリカの ID。
pullReplicaTickCountULONGLONG*inoutpbReplicaId についてのナレッジ内の最小ティックカウントを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
vtbl 21 HRESULT GetRangeExceptions(GUID* riid, void** ppUnk)

ナレッジに格納されている IRangeException オブジェクトを列挙できるオブジェクトを取得します。

riidGUID*in取得するオブジェクトの IID。IID_IEnumRangeExceptions である必要があります。
ppUnkvoid**inoutriid を実装し、ナレッジに含まれる IRangeException オブジェクトのリストを列挙できるオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_NOINTERFACE
E_OUTOFMEMORY

解説(Remarks)

ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetRangeExceptions から異なる値が返される場合があります。

vtbl 22 HRESULT GetSingleItemExceptions(GUID* riid, void** ppUnk)

ナレッジに格納されている ISingleItemException オブジェクトを列挙できるオブジェクトを取得します。

riidGUID*in取得するオブジェクトの IID。IID_IEnumSingleItemExceptions である必要があります。
ppUnkvoid**inoutriid を実装し、ナレッジに含まれる ISingleItemException オブジェクトのリストを列挙できるオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_NOINTERFACE
E_OUTOFMEMORY

解説(Remarks)

ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetSingleItemExceptions から異なる値が返される場合があります。

vtbl 23 HRESULT GetChangeUnitExceptions(GUID* riid, void** ppUnk)

ナレッジに格納されている IChangeUnitException オブジェクトを列挙できるオブジェクトを取得します。

riidGUID*in取得するオブジェクトの IID。IID_IEnumChangeUnitExceptions である必要があります。
ppUnkvoid**inoutriid を実装し、ナレッジに含まれる IChangeUnitException オブジェクトのリストを列挙できるオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_NOINTERFACE
E_OUTOFMEMORY

解説(Remarks)

ナレッジの表現方法は一意ではないことに注意してください。等価なナレッジであっても、異なる形式で表現され、GetChangeUnitExceptions から異なる値が返される場合があります。

vtbl 24 HRESULT FindClockVectorForItem(BYTE* pbItemId, GUID* riid, void** ppUnk)

指定されたアイテム ID に関連付けられているクロックベクターを取得します。

pbItemIdBYTE*in検索するクロックベクターに関連付けられているアイテムの ID。
riidGUID*in取得するオブジェクトの IID。IID_IFeedClockVector または IID_IClockVector である必要があります。
ppUnkvoid**inoutriid を実装し、pbItemId に関連付けられたクロックベクターを表すオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_NOINTERFACE
E_OUTOFMEMORY
vtbl 25 HRESULT FindClockVectorForChangeUnit(BYTE* pbItemId, BYTE* pbChangeUnitId, GUID* riid, void** ppUnk)

指定された変更単位 ID に関連付けられているクロックベクターを取得します。

pbItemIdBYTE*in取得するクロックベクターに関連付けられている変更単位を含むアイテムの ID。
pbChangeUnitIdBYTE*in取得するクロックベクターに関連付けられている変更単位の ID。
riidGUID*in取得するオブジェクトの IID。IID_IEnumClockVector である必要があります。
ppUnkvoid**inoutriid を実装し、pbChangeUnitId に関連付けられた IClockVector オブジェクトのリストを列挙できるオブジェクトを返します。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
E_NOINTERFACE
E_OUTOFMEMORY
vtbl 26 HRESULT GetVersion(DWORD* pdwVersion)

このナレッジ構造のバージョンを取得します。

pdwVersionDWORD*inoutこのナレッジ構造のバージョンを返します。SYNC_SERIALIZATION_VERSION 列挙型の値のいずれかです。

戻り値

戻り値として想定されるコードには、次の表に示す値が含まれます(ただし、これらに限定されません)。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
ポインターが無効です。

解説(Remarks)

この値は、ナレッジ構造自体のバージョンです。内部のナレッジ構造が変更されると、このメソッドが返すバージョンも変更されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 指定が可能。