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

ISyncKnowledge2

COM
IIDed0addc0-3b4b-46a1-9a45-45661d2114c8継承元ISyncKnowledge自前メソッド開始 vtbl27

公式ドキュメント

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

解説(Remarks)

ISyncKnowledge2 オブジェクトは、ISyncKnowledge オブジェクトの QueryInterface メソッドに IID_ISyncKnowledge2 を渡すことで取得できます。

メソッド 14

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

vtbl 27 HRESULT GetIdParameters(ID_PARAMETERS* pIdParameters)

プロバイダーの ID 形式スキーマを取得します。(ISyncKnowledge2.GetIdParameters)

pIdParametersID_PARAMETERS*inoutプロバイダーの ID 形式スキーマ。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pIdParametersdwSize メンバーが sizeof(ID_PARAMETERS) と一致しません。
E_POINTER
無効なポインターです。
vtbl 28 HRESULT ProjectOntoColumnSet(BYTE** ppColumns, DWORD count, ISyncKnowledge2** ppiKnowledgeOut)

このオブジェクトに含まれるすべてのアイテムについて、指定された変更単位のセットに関するナレッジを返します。

ppColumnsBYTE**in検索する変更単位 ID のセット。
countDWORDinppColumns に含まれる変更単位 ID の数。
ppiKnowledgeOutISyncKnowledge2**outこのオブジェクトに含まれるすべてのアイテムについて、ppColumns で指定された変更単位のみを含むナレッジオブジェクト。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
count が 0 です。
E_POINTER
無効なポインターです。
SYNC_E_ID_FORMAT_MISMATCH
ppColumns に含まれる変更単位 ID の形式が、プロバイダーの形式スキーマで指定された形式ではありません。

解説(Remarks)

ProjectOntoColumnSetISyncKnowledge::ProjectOntoChangeUnit とは異なります。ProjectOntoColumnSet は、ナレッジオブジェクトに含まれるすべてのアイテムについて、指定された変更単位のセットに関する情報を含むナレッジオブジェクトを返します。ProjectOntoChangeUnit は、単一のアイテムに含まれる単一の変更単位に関する情報を含むナレッジオブジェクトを返します。

vtbl 29 HRESULT SerializeWithOptions(SYNC_SERIALIZATION_VERSION targetFormatVersion, DWORD dwFlags, BYTE* pbBuffer, DWORD* pdwSerializedSize)

指定されたバージョンとシリアル化オプションに基づいて、ナレッジオブジェクトのデータをバイト配列にシリアル化します。

targetFormatVersionSYNC_SERIALIZATION_VERSIONinシリアル化されたナレッジは、このバージョンと互換性を持ちます。
dwFlagsDWORDinオブジェクトのシリアル化方法に関する追加情報を指定するオプション。0、または SYNC_SERIALIZE フラグで指定される値の組み合わせである必要があります (「解説」を参照)。0 を指定した場合、レプリカキーマップはシリアル化されたナレッジデータに含まれません。
pbBufferBYTE*inoutシリアル化されたナレッジオブジェクトのデータは、このバッファーにシリアル化されます。
pdwSerializedSizeDWORD*inoutpBuffer のバイト数を指定します。pBuffer が小さすぎる場合はナレッジデータのシリアル化に必要なバイト数を、それ以外の場合は書き込まれたバイト数を返します。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
無効なポインターです。
HRESULT_FROM_WIN32(ERROR_MORE_DATA)
pBuffer が小さすぎます。この場合、必要なバイト数が pdwSerializedSize に返されます。
SYNC_E_INVALID_VERSION
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 を参照してください。

vtbl 30 HRESULT GetLowestUncontainedId(ISyncKnowledge2* piSyncKnowledge, BYTE* pbItemId, DWORD* pcbItemIdSize)

このナレッジには含まれず、指定されたナレッジに含まれるアイテム ID のうち、最小のものを返します。

piSyncKnowledgeISyncKnowledge2*inpbItemId に返されるアイテム ID は、piSyncKnowledge に含まれます。
pbItemIdBYTE*inoutpiSyncKnowledge に含まれ、このナレッジには含まれないアイテム ID のうち、最小のもの。
pcbItemIdSizeDWORD*inoutpbItemId のバイト数。pbItemId が小さすぎる場合は ID の取得に必要なバイト数を、それ以外の場合は書き込まれたバイト数を返します。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
S_FALSE
piSyncKnowledge はこのナレッジに含まれています。この場合、返すべき未包含のアイテム ID はありません。
E_INVALIDARG
piSyncKnowledge の ID 形式スキーマが、このナレッジの ID 形式スキーマと異なります。
E_POINTER
無効なポインターです。
HRESULT_FROM_WIN32(ERROR_MORE_DATA)
pbItemId が小さすぎます。この場合、必要なバイト数が pcbItemIdSize に返されます。
vtbl 31 HRESULT GetInspector(GUID* riid, void** ppiInspector)

ナレッジオブジェクトの内容を取得するために使用できるオブジェクトを返します。

riidGUID*in要求するインスペクターの IID。IID_ICoreFragmentInspector である必要があります。
ppiInspectorvoid**inoutriid を実装し、ナレッジオブジェクトの内容を取得できるオブジェクト。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_NOINTERFACE
riidIID_ICoreFragmentInspector ではありません。
E_POINTER
無効なポインターです。
vtbl 32 HRESULT GetMinimumSupportedVersion(SYNC_SERIALIZATION_VERSION* pVersion)

このオブジェクトと共に使用できる Microsoft Sync Framework コンポーネントの、サポートされる最小バージョンを取得します。

pVersionSYNC_SERIALIZATION_VERSION*inoutこのオブジェクトと共に使用できる Microsoft Sync Framework コンポーネントの、サポートされる最小バージョン。

戻り値

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

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

解説(Remarks)

メモ このメソッドは、Microsoft Sync Framework コンポーネントを使用する同期セッションでのみ使用されます。
SYNC_SERIALIZATION_VERSION_V2 のバージョンを持つナレッジオブジェクトは、Sync Framework 1.0 と互換性のある要素のみを含んでいる場合、Sync Framework 1.0 と互換性のあるコンポーネントをサポートします。この場合、GetMinSupportedVersionSYNC_SERIALIZATION_VERSION_V1 のバージョンを返します。

Microsoft Sync Framework を使用して同期プロバイダーを構築する際に必要となる作業の概要については、Options for Building a Synchronization Provider を参照してください。

vtbl 33 HRESULT GetStatistics(SYNC_STATISTICS which, DWORD* pValue)

このオブジェクトに含まれる、指定された統計データを取得します。

whichSYNC_STATISTICSin取得する統計情報を指定します。
pValueDWORD*inout指定された統計データ。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
whichSYNC_STATISTICS 列挙体のメンバーではありません。
E_POINTER
無効なポインターです。
vtbl 34 HRESULT ContainsKnowledgeForItem(ISyncKnowledge* pKnowledge, BYTE* pbItemId)

指定されたアイテムに関する指定されたナレッジが、このナレッジによって把握されているかどうかを示します。

pKnowledgeISyncKnowledge*inpbItemId に関するナレッジを含むナレッジオブジェクト。
pbItemIdBYTE*in検索するアイテムの ID。

戻り値

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

戻り値 説明
S_OK
このオブジェクトは、pbItemId について pKnowledge が把握しているナレッジを含んでいます。
S_FALSE
このオブジェクトは、pbItemId について pKnowledge が把握しているナレッジを含んでいません。
E_POINTER
無効なポインターです。
SYNC_E_ID_FORMAT_MISMATCH
pbItemId がプロバイダーで指定された形式ではありません。

解説(Remarks)

同じ結果を得る別の方法として、pbItemIdpKnowledgeISyncKnowledge::ProjectOntoItem メソッドに渡し、その結果として得られた射影ナレッジを、このオブジェクトの ISyncKnowledge::ContainsKnowledge メソッドに渡す方法があります。

vtbl 35 HRESULT ContainsKnowledgeForChangeUnit(ISyncKnowledge* pKnowledge, BYTE* pbItemId, BYTE* pbChangeUnitId)

指定された変更単位に関する指定されたナレッジが、このナレッジによって把握されているかどうかを示します。

pKnowledgeISyncKnowledge*inpbChangeUnitId に関するナレッジを含むナレッジオブジェクト。
pbItemIdBYTE*in検索する変更単位を含むアイテムの ID。
pbChangeUnitIdBYTE*in検索する変更単位の ID。

戻り値

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

戻り値 説明
S_OK
このオブジェクトは、pbChangeUnitId について pKnowledge が把握しているナレッジを含んでいます。
S_FALSE
このオブジェクトは、pbChangeUnitId について pKnowledge が把握しているナレッジを含んでいません。
E_POINTER
無効なポインターです。
SYNC_E_ID_FORMAT_MISMATCH
pbChangeUnitId がプロバイダーで指定された形式ではありません。

解説(Remarks)

同じ結果を得る別の方法として、pbItemIdpbChangeUnitIdpKnowledgeISyncKnowledge::ContainsChangeUnit メソッドに渡し、その結果として得られた射影ナレッジを、このオブジェクトの ISyncKnowledge::ContainsKnowledge メソッドに渡す方法があります。

vtbl 36 HRESULT ProjectOntoKnowledgeWithPrerequisite(ISyncKnowledge* pPrerequisiteKnowledge, ISyncKnowledge* pTemplateKnowledge, ISyncKnowledge** ppProjectedKnowledge)

テンプレートナレッジが指定されたフラグメントに対する前提ナレッジを含んでいる場合に、テンプレートナレッジで指定されたナレッジフラグメントに関するナレッジを返します。

pPrerequisiteKnowledgeISyncKnowledge*inppProjectedKnowledge にナレッジが追加されるために、pTemplateKnowledge が含んでいる必要があるナレッジを指定します。
pTemplateKnowledgeISyncKnowledge*inppProjectedKnowledge に追加するナレッジフラグメントのセットを指定します。
ppProjectedKnowledgeISyncKnowledge**out指定されたフラグメントについて pTemplateKnowledgepPrerequisiteKnowledge に含まれるナレッジを含んでいる場合に、pTemplateKnowledge で指定されたナレッジフラグメントを含むナレッジオブジェクト。

戻り値

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

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
無効なポインターです。
SYNC_E_ID_FORMAT_MISMATCH
pPrerequisiteKnowledge または pTemplateKnowledge に含まれる ID 形式スキーマが、このオブジェクトの ID 形式スキーマと異なります。

解説(Remarks)

ppProjectedKnowledge に返すナレッジを計算するため、このメソッドは pTemplateKnowledge に含まれるナレッジフラグメントを列挙します。pTemplateKnowledge 内の各ナレッジフラグメントについて、そのフラグメントに関して pPrerequisiteKnowledge が把握しているナレッジが pTemplateKnowledge に含まれているかどうかを確認します。あるフラグメントについて把握されている前提ナレッジが pTemplateKnowledge に含まれている場合、そのフラグメントについてこのオブジェクトが把握しているナレッジが ppProjectedKnowledge に追加されます。あるフラグメントについて把握されている前提ナレッジが pTemplateKnowledge に含まれていない場合、ppProjectedKnowledge にはそのフラグメントに関するナレッジは含まれません。

vtbl 37 HRESULT Complement(ISyncKnowledge* pSyncKnowledge, ISyncKnowledge** ppComplementedKnowledge)

このオブジェクトには含まれるが、指定されたナレッジには含まれないナレッジを返します。

pSyncKnowledgeISyncKnowledge*in補集合演算の結果を計算するために、このオブジェクトから取り除くナレッジ。
ppComplementedKnowledgeISyncKnowledge**outこのオブジェクトには含まれるが、指定されたナレッジには含まれないナレッジ。

戻り値

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

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

解説(Remarks)

補集合演算は、概念的には減算操作と考えることができます。指定されたナレッジがこのオブジェクトのナレッジから差し引かれ、その結果が返されます。

vtbl 38 HRESULT IntersectsWithKnowledge(ISyncKnowledge* pSyncKnowledge)

指定されたナレッジがこのナレッジと交差するかどうかを示します。

pSyncKnowledgeISyncKnowledge*in交差があるかどうかを判断するために、このオブジェクトと照合されるナレッジ。

戻り値

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

戻り値 説明
S_OK
指定されたナレッジはこのナレッジと交差します。
S_FALSE
指定されたナレッジはこのナレッジと交差しません。
E_POINTER
無効なポインターです。
vtbl 39 HRESULT GetKnowledgeCookie(IUnknown** ppKnowledgeCookie)

高速な比較に使用できる、このナレッジオブジェクトの軽量な読み取り専用表現を取得します。

ppKnowledgeCookieIUnknown**out高速な比較に使用できる、このナレッジオブジェクトの軽量な読み取り専用表現。

戻り値

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

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

解説(Remarks)

比較操作のパフォーマンスが特に重要な場合、ナレッジ Cookie を ISyncKnowledge2::CompareToKnowledgeCookie と組み合わせて使用することで、他のナレッジオブジェクトとの高速な比較を行えます。

vtbl 40 HRESULT CompareToKnowledgeCookie(IUnknown* pKnowledgeCookie, KNOWLEDGE_COOKIE_COMPARISON_RESULT* pResult)

指定されたナレッジ Cookie とこのナレッジオブジェクトとの間で高速な比較を実行します。

pKnowledgeCookieIUnknown*inこのオブジェクトと比較するナレッジ Cookie。
pResultKNOWLEDGE_COOKIE_COMPARISON_RESULT*inout比較の結果。

戻り値

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

戻り値 説明
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_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 指定が可能。