ISyncChangeBatchBase2::SerializeWithOptions
指定したバージョンとシリアル化のオプションに基づいて、変更バッチ オブジェクトのデータをバイト配列にシリアル化します。
構文
HRESULT SerializeWithOptions(
SYNC_SERIALIZATION_VERSION targetFormatVersion,
DWORD dwFlags,
BYTE * pbBuffer,
DWORD * pdwSerializedSize);
パラメーター
項目 |
定義 |
targetFormatVersion |
[in] シリアル化された変更バッチはこのバージョンと互換性があります。 |
dwFlags |
[in] 予約済み。0 を指定する必要があります。 |
pbBuffer |
[in, out, unique, size_is(*pdwSerializedSize)] シリアル化された変更バッチ オブジェクトのデータはこのバッファーにシリアル化されます。 |
pdwSerializedSize |
[in, out] pBuffer のバイト数を指定します。書き込まれたバイト数を返します。pBuffer が小さすぎる場合は、変更バッチ データをシリアル化するために必要なバイト数を返します。 |
戻り値
S_OK
E_INVALIDARG (dwFlags が 0 でない場合、または targetFormatVersion によって指定されたバージョンと変更バッチ オブジェクトのデータに互換性がない場合)
E_OUTOFMEMORY
E_POINTER
HRESULT_FROM_WIN32(ERROR_MORE_DATA) (pBuffer が小さすぎる場合。この場合、必要なバイト数が pdwSerializedSize で返されます。)
SYNC_E_INVALID_OPERATION (開始されて終了していないグループが変更バッチに含まれている場合)
SYNC_E_INVALID_VERSION (targetFormatVersion の値がオブジェクトのバージョンの値より大きい場合、または targetFormatVersion と互換性のない要素がオブジェクトに含まれている場合)
説明
targetFormatVersion の値によって、シリアル化された変更バッチ データの形式が決まります。SYNC_SERIALIZATION_VERSION_V1 を指定した場合、シリアル化された形式は Sync Framework 1.0 以降のコンポーネントと互換性があります。SYNC_SERIALIZATION_VERSION_V2 を指定した場合、シリアル化された形式は Sync Framework 2.0 のコンポーネントと互換性があります。Sync Framework 1.0 と互換性のない要素が変更バッチ オブジェクトに含まれている場合に SYNC_SERIALIZATION_VERSION_V2 を指定すると、E_INVALIDARG または SYNC_E_INVALID_OPERATION が返されます。
注意
Sync Framework 1.0 形式へのシリアル化は、Sync Framework 2.0 形式へのシリアル化に比べて効率が劣ります。Sync Framework 1.0 形式のニーズが特にない限り、Sync Framework 2.0 形式を使用してください。
シリアル化形式
pbBuffer に含まれるシリアル化された変更バッチは、埋め込みなしのコンパクトな形式で、ビッグ エンディアンのバイト順に格納されています。シリアル化された変更バッチには、以下の要素が以下に示す順序で含まれます。
1 つのヘッダー セクション。ヘッダー セクションには、次の要素が含まれます。
データ型
バイト数
説明
ULONGLONG
8
変更バッチのシリアル化形式のバージョンです。この値は、targetFormatVersion が SYNC_SERIALIZATION_VERSION_V1 の場合は 3、targetFormatVersion が SYNC_SERIALIZATION_VERSION_V2 の場合は 4、targetFormatVersion が SYNC_SERIALIZATION_VERSION_V3 の場合は 5 になります。
1 つのフィルター情報セクション (targetFormatVersion が SYNC_SERIALIZATION_VERSION_V2 で、フィルター情報が変更バッチで示される場合)。フィルター情報セクションには、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
フィルター情報セクションの長さ (バイト数) です。
残りのフィルター情報セクションは、ISyncFilterInfo::Serialize で示される形式になります。
1 つの同期先ナレッジ セクション。同期先ナレッジ セクションには、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
同期先ナレッジ セクションの長さ (バイト数) です。この長さには 0 を指定できます。この場合、同期先ナレッジは存在しないということになります。
バイト シーケンス
上記の ULONG で指定された長さ
targetFormatVersion が SYNC_SERIALIZATION_VERSION_V1 の場合、同期先ナレッジは ISyncKnowledge::Serialize によって示される形式になります。それ以外の場合、同期先ナレッジは ISyncKnowledge2::SerializeWithOptions によって示される形式になります。シリアル化された同期先ナレッジには、常に、シリアル化されたレプリカ キー マップが含まれます。
1 つの同期元の忘れられたナレッジ セクション。同期元の忘れられたナレッジ セクションには、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
同期元の忘れられたナレッジ セクションの長さ (バイト数) です。この長さには 0 を指定できます。この場合、同期元の忘れられたナレッジは存在しないということになります。
バイト シーケンス
上記の ULONG で指定された長さ
targetFormatVersion が SYNC_SERIALIZATION_VERSION_V1 の場合、同期元の忘れられたナレッジは ISyncKnowledge::Serialize によって示される形式になります。それ以外の場合、同期元の忘れられたナレッジは ISyncKnowledge2::SerializeWithOptions によって示される形式になります。シリアル化された同期元の忘れられたナレッジには、常に、シリアル化されたレプリカ キー マップが含まれます。
同期元の 1 つのフィルター キー マップ セクション (targetFormatVersion が SYNC_SERIALIZATION_VERSION_V3 で、同期元のフィルター キー マップ情報が存在する場合)。同期元のフィルター キー マップ セクションには、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
同期元のフィルター キー マップ セクションの長さ (バイト数) です。この長さには 0 を指定できます。この場合、同期元のフィルター キー マップは存在しないことになります。
USHORT
2
フィルター キー マップのシリアル化形式のバージョンです。この値は SYNC_SERIALIZATION_VERSION_V3 です。
ULONG
4
フィルター キー マップのフィルター数です。
フィルター キー マップの各フィルターには、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
フィルターの長さ (バイト数) です。
バイト シーケンス
上記の ULONG で指定された長さ
ISyncFilter::Serialize メソッドによってストリームに書き込まれた、シリアル化されたフィルター データです。
1 つの関連付けられているナレッジ セクション。関連付けられているナレッジ セクションには、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
シリアル化されたデータに含まれる、関連付けられているナレッジ オブジェクトの数です。この数には 0 を指定できます。この場合、関連付けられているナレッジは存在しないということになります。
関連付けられているナレッジごとに、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
関連付けられているナレッジの長さ (バイト数) です。
バイト シーケンス
上記の ULONG で指定された長さ
targetFormatVersion が SYNC_SERIALIZATION_VERSION_V1 の場合、関連付けられているナレッジは ISyncKnowledge::Serialize によって示される形式になります。それ以外の場合、関連付けられているナレッジは ISyncKnowledge2::SerializeWithOptions によって示される形式になります。シリアル化された、関連付けられているナレッジには、常に、シリアル化されたレプリカ キー マップが含まれます。
1 つの変更セット セクション。変更セット セクションには、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
シリアル化されたデータに含まれる変更オブジェクトの数です。この数には 0 を指定できます。この場合、変更は存在しないということになります。
各変更には、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
変更データの長さ (バイト数) です。
ULONGLONG
8
変更オブジェクトのシリアル化形式の署名です。この値は、targetFormatVersion が SYNC_SERIALIZATION_VERSION_V1 または SYNC_SERIALIZATION_VERSION_V2 の場合は 5、targetFormatVersion が SYNC_SERIALIZATION_VERSION_V3 の場合は 6 になります。
レプリカ ID が固定長の場合は、次のとおりです。
データ型
バイト数
説明
バイト シーケンス
レプリカ ID の形式で指定された長さ
固定長のレプリカ ID です。
レプリカ ID が可変長の場合は、次のとおりです。
データ型
バイト数
説明
USHORT
2
可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。
バイト シーケンス
上記の USHORT で指定された長さ
可変長のレプリカ ID です。
各変更には、次の追加要素が含まれます。
データ型
バイト数
説明
ULONG
4
この変更を加えたレプリカを識別するレプリカ キーです。
ULONGLONG
8
この変更を加えたレプリカのティック数です。
ULONG
4
予約済み。この値は無視できます。
ULONGLONG
8
予約済み。この値は無視できます。
ULONG
4
この項目を作成したレプリカを識別するレプリカ キーです。
ULONGLONG
8
この項目を作成したレプリカのティック数です。
項目 ID が固定長の場合は、次のとおりです。
データ型
バイト数
説明
バイト シーケンス
項目 ID 形式で指定された長さ
固定長の項目 ID です。
項目 ID が可変長の場合は、次のとおりです。
データ型
バイト数
説明
USHORT
2
可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。
バイト シーケンス
上記の USHORT で指定された長さ
可変長の項目 ID です。
targetFormatVersion が SYNC_SERIALIZATION_VERSION_V3 以上の場合、各変更には次の追加要素が含まれます。
データ型
バイト数
説明
BOOL
1
優先される ID がシリアル化されたデータに存在するかどうかを示します。値 0 は、優先される ID が存在しないことを示します。値 1 は、優先される ID が存在することを示します。
項目 ID が固定長の場合は、次のとおりです。
データ型
バイト数
説明
バイト シーケンス
項目 ID 形式で指定された長さ
固定長の優先される ID です。
項目 ID が可変長の場合は、次のとおりです。
データ型
バイト数
説明
USHORT
2
可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。
バイト シーケンス
上記の USHORT で指定された長さ
可変長の優先される ID です。
すべての変更には、次の追加要素が含まれます。
データ型
バイト数
説明
ULONG
4
変更に関連付けられたフラグです。これは、SYNC_CHANGE_FLAG フラグの組み合わせです。
ULONG
4
変更の作業見積もりです。
USHORT
2
予約済み。この値は常に 0 です。
BYTE
1
この変更に関連付けられている学習したナレッジが、この項目に射影されるかどうかを示します。値 0 は、学習したナレッジが射影されないことを示します。値 1 は、学習したナレッジが射影されることを示します。
ULONG
4
このシリアル化されたデータに含まれている、関連付けられているナレッジの一覧へのインデックスです。この値には 0 を指定できます。これは、関連付けられているナレッジが、この項目に関連付けられていないことを示します。
ULONG
4
この変更に含まれている変更単位の数です。この値には 0 を指定できます。この場合、変更単位は存在しないということになります。
変更には、変更単位の一覧が含まれます。この一覧の変更単位の数は、上記の ULONG に格納された値と一致します。
各変更単位には、次の要素が含まれます。
変更単位 ID が固定長の場合は、次のとおりです。
データ型
バイト数
説明
バイト シーケンス
変更単位 ID 形式で指定された長さ
固定長の変更単位 ID です。
変更単位 ID が可変長の場合は、次のとおりです。
データ型
バイト数
説明
USHORT
2
可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。
バイト シーケンス
上記の USHORT で指定された長さ
可変長の変更単位 ID です。
各変更単位には、次の追加要素が含まれます。
データ型
バイト数
説明
ULONG
4
この変更を加えたレプリカを識別するレプリカ キーです。
ULONGLONG
8
この変更を加えたレプリカのティック数です。
ULONG
4
予約済み。この値は常に 0 です。
ULONGLONG
8
予約済み。この値は常に 0 です。
1 つの復旧同期セクション。復旧同期セクションには、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
復旧同期セクションの長さ (バイト数) です。この値が 0 の場合、復旧同期セクションは存在しないということになります。
項目 ID が固定長の場合は、次のとおりです。
データ型
バイト数
説明
バイト シーケンス
項目 ID 形式で指定された長さ
変更バッチが復旧同期に含まれている場合に、この変更バッチ内の変更の下限を表す固定長の項目 ID です。
項目 ID が可変長の場合は、次のとおりです。
データ型
バイト数
説明
USHORT
2
可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。
バイト シーケンス
上記の USHORT で指定された長さ
変更バッチが復旧同期に含まれている場合に、この変更バッチ内の変更の下限を表す可変長の項目 ID です。
1 つの作業見積もりセクション。作業見積もりセクションには、次の要素が含まれます。
データ型
バイト数
説明
ULONG
4
同期セッションの作業見積もりです。
ULONG
4
この変更バッチの作業見積もりです。
1 つのフラグ セクション。フラグ セクションには、次の要素が含まれます。
データ型
バイト数
説明
BYTE
1
この変更バッチが、同期元プロバイダーから送信された最後の変更バッチであるかどうかを示します。値 0 は、これが最後の変更バッチではないことを示します。値 1 は、これが最後の変更バッチであることを示します。
BYTE
1
この変更バッチが復旧同期に含まれているかどうかを示します。値 0 は、この変更バッチが復旧同期に含まれていないことを示します。値 1 は、この変更バッチが復旧同期に含まれていることを示します。
BYTE
1
この変更バッチがフィルター選択されているかどうかを示します。値 0 は、この変更バッチがフィルター選択されていないことを示します。値 1 は、この変更バッチがフィルター選択されていることを示します。