ISyncKnowledge::Serialize
ナレッジ オブジェクトのデータをバイト配列にシリアル化します。
HRESULT Serialize(
BOOL fSerializeReplicaKeyMap,
BYTE *pbKnowledge,
DWORD *pcbKnowledge);
パラメーター
- fSerializeReplicaKeyMap
[in] ナレッジに含まれている IReplicaKeyMap オブジェクトをシリアル化する場合は TRUE。それ以外の場合は FALSE。
- pbKnowledge
[in, out, unique, size_is(*pcbKnowledge)] シリアル化されたナレッジ データを受け取るバイト配列です。
- pcbKnowledge
[in, out] pbKnowledge のバイト数を指定します。書き込まれたバイト数を返します。pbKnowledge が小さすぎる場合は、レプリカ キー マップのデータをシリアル化するために必要なバイト数を返します。
戻り値
S_OK
E_POINTER
E_INVALIDARG
E_OUTOFMEMORY
HRESULT_FROM_WIN32(ERROR_MORE_DATA) (pbKnowledge が小さすぎる場合。この場合、必要なバイト数が pcbKnowledge で返されます。)
解説
IProviderSyncServices::DeserializeSyncKnowledge を使用してナレッジ オブジェクトのシリアル化を解除するには、適切な IReplicaKeyMap インターフェイス オブジェクトが必要です。fSerializeReplicaKeyMap に FALSE が指定されている場合は、IReplicaKeyMap オブジェクトがナレッジ データと共にシリアル化されます。このフラグが指定されていない場合は、ナレッジ オブジェクトのシリアル化を解除できるように、別の方法で IReplicaKeyMap データを格納する必要があります。
シリアル化形式
pbKnowledge に含まれるシリアル化されたナレッジは、埋め込みなしのコンパクトな形式で、ビッグ エンディアンのバイト順に格納されています。シリアル化されたナレッジには、以下の要素が以下に示す順序で含まれます。
1 つのヘッダー セクション。ヘッダー セクションには、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
シリアル化形式のメジャー バージョンです。この値は常に 3 です。
ULONG
4
シリアル化形式のマイナー バージョンです。この値は常に 0 です。
fSerializeReplicaKeyMap が TRUE の場合は 1 つのレプリカ キー マップ セクション。それ以外の場合、レプリカ キー マップ セクションは存在しません。レプリカ キー マップ セクションの形式は、IReplicaKeyMap::Serialize で定義されます。
1 つの ID 形式スキーマ セクション。ID 形式スキーマ セクションには、次の要素が含まれます。
データ型 バイト数 説明 BOOL
1
ナレッジに含まれる項目 ID が固定長か可変長かを示します。この値は、ID が固定長の場合に 0、可変長の場合に 1 になります。
USHORT
2
固定長 ID の場合は項目 ID の長さ (バイト数)、可変長 ID の場合は ID の最大長です。
BOOL
1
ナレッジに含まれる変更単位 ID が固定長か可変長かを示します。この値は、ID が固定長の場合に 0、可変長の場合に 1 になります。
USHORT
2
固定長 ID の場合は変更単位 ID の長さ (バイト数)、可変長 ID の場合は ID の最大長です。
1 つのスコープ クロック ベクター セクション。スコープ クロック ベクター セクションには、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
クロック ベクターの署名です。この値は、クロック ベクターに FeedSync フィード項目が含まれていない場合に 1、それ以外の場合 (クロック ベクターに FeedSync フィード項目が含まれている場合) に 9 になります。
ULONG
4
このクロック ベクターに含まれるクロック ベクター要素の数です。
クロック ベクターに FeedSync フィード項目が含まれている場合は、次のセクションがシリアル化されたナレッジに存在します。それ以外の場合は存在しません。
データ型 バイト数 説明 ULONG
4
このナレッジに関連付けられている FeedSync フィードにこれまでに適用された更新の数です。この値は、FeedSync フィードの updates 属性に対応します。
BYTE
1
FeedSync フィードが競合を追跡するかどうかを示します。この値は、FeedSync フィードの noconflicts 属性に対応します。この値は、noconflicts 属性が設定されていない場合は 0、それ以外の場合は 1 になります。
残りのクロック ベクター セクションには、クロック ベクター要素の一覧が含まれ、この一覧の要素の数は、上記のクロック ベクター セクションで指定した値と一致します。
各クロック ベクター要素には、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
レプリカ キーです。
ULONGLONG
8
ティック数です。
ナレッジが FeedSync フィードに関連付けられている場合、各クロック ベクター要素には次の追加要素が含まれます。
データ型 バイト数 説明 ULONG
4
FeedSync フィードの when 値の日付部分です。
ULONG
4
FeedSync フィードの when 値の時刻部分です。
BYTE
1
FeedSync フィードに関連付けられているフラグです。
1 つの範囲の例外セクション。範囲の例外セクションには、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
範囲の例外セクションの署名です。この値は常に 3 です。
ULONG
4
ナレッジに含まれている範囲の例外の数です。
範囲の例外セクションには、範囲の例外の一覧が含まれ、この一覧の範囲の例外の数は、上記の ULONG で指定された値と一致します。
各範囲の例外には、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
範囲の例外の署名です。この値は常に 2 です。
項目 ID が固定長の場合は、次のとおりです。
データ型 バイト数 説明 バイト シーケンス
項目 ID 形式で指定された長さ
項目 ID の範囲の下限の固定長項目 ID です。
バイト シーケンス
項目 ID 形式で指定された長さ
項目 ID の範囲の上限の固定長項目 ID です。
項目 ID が可変長の場合は、次のとおりです。
データ型 バイト数 説明 USHORT
2
可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。
バイト シーケンス
上記の USHORT で指定された長さ
項目 ID の範囲の下限の可変長項目 ID です。
USHORT
2
可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。
バイト シーケンス
上記の USHORT で指定された長さ
項目 ID の範囲の上限の可変長項目 ID です。
範囲の例外に関連付けられているクロック ベクターには、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
クロック ベクターの署名です。この値は、クロック ベクターに FeedSync フィード項目が含まれていない場合に 1、それ以外の場合 (クロック ベクターに FeedSync フィード項目が含まれている場合) に 9 になります。
ULONG
4
このクロック ベクターに含まれるクロック ベクター要素の数です。
クロック ベクターに FeedSync フィード項目が含まれている場合は、次のセクションがシリアル化されたナレッジに存在します。それ以外の場合は存在しません。
データ型 バイト数 説明 ULONG
4
このナレッジに関連付けられている FeedSync フィードにこれまでに適用された更新の数です。この値は、FeedSync フィードの updates 属性に対応します。
BYTE
1
FeedSync フィードが競合を追跡するかどうかを示します。この値は、FeedSync フィードの noconflicts 属性に対応します。この値は、noconflicts 属性が設定されていない場合は 0、それ以外の場合は 1 になります。
残りのクロック ベクター セクションには、クロック ベクター要素の一覧が含まれ、この一覧の要素の数は、上記のクロック ベクター セクションで指定した値と一致します。
各クロック ベクター要素には、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
レプリカ キーです。
ULONGLONG
8
ティック数です。
ナレッジが FeedSync フィードに関連付けられている場合、各クロック ベクター要素には次の追加要素が含まれます。
データ型 バイト数 説明 ULONG
4
FeedSync フィードの when 値の日付部分です。
ULONG
4
FeedSync フィードの when 値の時刻部分です。
BYTE
1
FeedSync フィードに関連付けられているフラグです。
単一項目の例外セクション。単一項目の例外セクションには、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
単一項目の例外セクションの署名です。この値は常に 6 です。
ULONG
4
クロック ベクター テーブルの署名です。この値は常に 4 です。
ULONG
4
クロック ベクター テーブルに含まれるクロック ベクターの数です。
クロック ベクター テーブル。クロック ベクター テーブルには、クロック ベクターの一覧が含まれ、この一覧のクロック ベクターの数は、上記の ULONG で指定された値と一致します。各クロック ベクターには、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
クロック ベクターの署名です。この値は、クロック ベクターに FeedSync フィード項目が含まれていない場合に 1、それ以外の場合 (クロック ベクターに FeedSync フィード項目が含まれている場合) に 9 になります。
ULONG
4
このクロック ベクターに含まれるクロック ベクター要素の数です。
クロック ベクターに FeedSync フィード項目が含まれている場合は、次のセクションがシリアル化されたナレッジに存在します。それ以外の場合は存在しません。
データ型 バイト数 説明 ULONG
4
このナレッジに関連付けられている FeedSync フィードにこれまでに適用された更新の数です。この値は、FeedSync フィードの updates 属性に対応します。
BYTE
1
FeedSync フィードが競合を追跡するかどうかを示します。この値は、FeedSync フィードの noconflicts 属性に対応します。この値は、noconflicts 属性が設定されていない場合は 0、それ以外の場合は 1 になります。
残りのクロック ベクター セクションには、クロック ベクター要素の一覧が含まれ、この一覧の要素の数は、上記のクロック ベクター セクションで指定した値と一致します。
各クロック ベクター要素には、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
レプリカ キーです。
ULONGLONG
8
ティック数です。
ナレッジが FeedSync フィードに関連付けられている場合、各クロック ベクター要素には次の追加要素が含まれます。
データ型 バイト数 説明 ULONG
4
FeedSync フィードの when 値の日付部分です。
ULONG
4
FeedSync フィードの when 値の時刻部分です。
BYTE
1
FeedSync フィードに関連付けられているフラグです。
単一項目の例外テーブル。単一項目の例外テーブルには、次の要素が含まれます。
データ型 バイト数 説明 ULONG
4
単一項目の例外テーブルに含まれている単一項目の例外の数です。
テーブル内の各単一項目の例外には、次の要素が含まれます。
項目 ID が固定長の場合は、次のとおりです。
データ型 バイト数 説明 バイト シーケンス
項目 ID 形式で指定された長さ
単一項目の例外に関連付けられている固定長の項目 ID です。
項目 ID が可変長の場合は、次のとおりです。
データ型 バイト数 説明 USHORT
2
可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。
バイト シーケンス
上記の USHORT で指定された長さ
単一項目の例外に関連付けられている可変長の項目 ID です。
各単一項目の例外には、次の追加要素が含まれます。
データ型 バイト数 説明 ULONG
4
単一項目の例外が項目を参照する場合、この値は、このシリアル化されたデータに含まれるクロック ベクター テーブルへのインデックスです。単一項目の例外が 1 つ以上の変更単位の例外を参照する場合、この値は 0xFFFFFFFF になります。
ULONG
4
例外に含まれている変更単位の例外の数です。この値には 0 を指定できます。
変更単位の例外が存在する場合は、その後に変更単位の例外の一覧が続きます。この一覧には、上記の ULONG で指定された数の変更単位の例外が含まれます。
各変更単位の例外には、次の要素が含まれます。
変更単位 ID が固定長の場合は、次のとおりです。
データ型 バイト数 説明 バイト シーケンス
変更単位 ID 形式で指定された長さ
変更単位の例外に関連付けられている、固定長の変更単位 ID です。
変更単位 ID が可変長の場合は、次のとおりです。
データ型 バイト数 説明 USHORT
2
可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。
バイト シーケンス
上記の USHORT で指定された長さ
変更単位の例外に関連付けられている、可変長の変更単位 ID です。
各変更単位の例外には、次の追加要素が含まれます。
データ型 バイト数 説明 ULONG
4
このシリアル化されたデータに含まれているクロック ベクター テーブルへのインデックスです。