2.14 SYNC_CHANGE_INFORMATION

The SYNC_CHANGE_INFORMATION structure represents the list of changed items tracked by the source replica when compared to the destination’s version state.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Version

...

Reserved1

DestinationKnowledgeSize

DestinationKnowledge (variable)

...

...

ForgottenKnowledgeSize

ForgottenKnowledge (variable)

...

...

Reserved2

Reserved3

MadeWithKnowledgeSize

MadeWithKnowledge (variable)

...

...

ChangeSetList (variable)

...

...

RecoverySectionLength

LowerRecoveryBound (variable)

...

...

WorkEstimateForSyncSession

WorkEstimateForChangeBatch

A

B

IsFiltered

Version (8 bytes): The SYNC_CHANGE_INFORMATION serialization format used; this MUST be set to 5.

Reserved1 (4 bytes): This value MUST be set to 0.

DestinationKnowledgeSize (4 bytes): The length, in bytes, of the DestinationKnowledge field.

DestinationKnowledge (variable): A SYNC_KNOWLEDGE structure that represents knowledge from the destination replica that is used to generate this SYNC_CHANGE_INFORMATION structure. The destination knowledge MUST always contain the serialized replica key map.

ForgottenKnowledgeSize (4 bytes): The length, in bytes, of the ForgottenKnowledge field. If 0, there is no ForgottenKnowledge field in this SYNC_CHANGE_INFORMATION structure.

ForgottenKnowledge (variable): A SYNC_KNOWLEDGE structure that tracks the maximum version of tombstones that have been removed from the destination’s synchronization metadata. The forgotten knowledge MUST always contain the serialized replica key map. This field is not present if the ForgottenKnowledgeSize field is set to 0.

Reserved2 (4 bytes): This value MUST be set to 0.

Reserved3 (4 bytes): This value MUST be set to 1.

MadeWithKnowledgeSize (4 bytes): The length, in bytes, of the MadeWithKnowledge field.

MadeWithKnowledge (variable): A SYNC_KNOWLEDGE structure that represents knowledge from the source replica that is used to generate this SYNC_CHANGE_INFORMATION structure. This field MUST always contain the serialized replica key map.

ChangeSetList (variable): The list of changes represented in this change batch.

RecoverySectionLength (4 bytes): The length, in bytes, of the LowerRecoveryBound data. If this is a recovery synchronization session (IsRecoverySynchronization is set to 1), this MUST be set to 16; otherwise, this value MUST be set to 0.

LowerRecoveryBound (variable): When present, this is the SYNC_GID for the lowest item in the ChangeSetEntries that is part of the recovery synchronization.

WorkEstimateForSyncSession (4 bytes): This value MUST be set to 0.

WorkEstimateForChangeBatch (4 bytes): This value MUST be set to 0.

A - IsLastChangeBatch (1 byte): Indicates whether this SYNC_CHANGE_INFORMATION is the last set of change information sent by the source replica. A value of 0 indicates that this is not the last set. A value of 1 indicates that this is the last set.

B - IsRecoverySynchronization (1 byte): Indicates whether this SYNC_CHANGE_INFORMATION is part of a recovery synchronization. A value of 1 indicates that this change information is part of a recovery synchronization. A value of 0 indicates that this change information is not part of a recovery synchronization.

IsFiltered (1 byte): This value MUST be set to 0.