Freigeben über


ISyncKnowledge2::SerializeWithOptions

Serialisiert die Wissensobjektdaten auf Grundlage der angegebenen Version und von Serialisierungsoptionen in ein Bytearray.

HRESULT SerializeWithOptions(
  SYNC_SERIALIZATION_VERSION targetFormatVersion,
  DWORD dwFlags,
  BYTE* pBuffer,
  DWORD* pdwSerializedSize);

Parameter

Ausdruck

Definition

targetFormatVersion

[in] Das serialisierte Wissen ist mit dieser Version kompatibel.

dwFlags

[in] Optionen, die zusätzliche Informationen zum Serialisieren des Objekts angeben. Muss 0 oder eine Kombination der Werte sein, die von den SYNC_SERIALIZE-Flags angegeben werden. Wenn 0 angegeben wird, ist die Replikatschlüsselzuordnung nicht als Teil der serialisierten Wissensdaten eingeschlossen.

pBuffer

[in, out, unique, size_is(*pdwSerializedSize)] Die serialisierten Wissensobjektdaten werden in diesen Puffer serialisiert.

pdwSerializedSize

[in, out] Gibt die Anzahl der Bytes in pBuffer an. Gibt entweder die Anzahl der zum Serialisieren der Wissensdaten erforderlichen Bytes zurück, wenn pBuffer zu klein ist, oder die Anzahl der geschriebenen Bytes.

Rückgabewert

  • S_OK.

  • E_POINTER.

  • HRESULT_FROM_WIN32(ERROR_MORE_DATA), wenn pBuffer zu klein ist. In dieser Situation wird in pdwSerializedSize die erforderliche Anzahl von Bytes zurückgegeben.

  • SYNC_E_INVALID_VERSION, wenn der Wert von targetFormatVersion höher als die Version des Objekts ist oder das Objekt Elemente enthält, die mit targetFormatVersion nicht kompatibel sind.

Hinweise

Der targetFormatVersion-Wert bestimmt das Format der serialisierten Wissensdaten. Wenn SYNC_SERIALIZATION_VERSION_V1 angegeben wird, ist das serialisierte Format mit Sync Framework 1.0- und höheren Komponenten kompatibel. Wenn SYNC_SERIALIZATION_VERSION_V2 angegeben wird, ist das serialisierte Format mit Sync Framework 2.0-Komponenten kompatibel. Wenn SYNC_SERIALIZATION_VERSION_V2 angegeben wird und das Wissensobjekt Elemente enthält, die nicht mit Sync Framework 1.0 kompatibel sind, wird SYNC_E_INVALID_VERSION zurückgegeben. Beispielsweise enthält das von ISyncKnowledge2::ProjectOntoColumnSet zurückgegebene Wissen Elemente, die in Sync Framework 2.0 eingeführt wurden, und kann deshalb nicht mit SYNC_SERIALIZATION_VERSION_V1 serialisiert werden, das für targetFormatVersion angegeben wurde.

Hinweis

Das Serialisieren auf das Sync Framework 1.0-Format ist weniger effizient als auf das Sync Framework 2.0-Format. Wenn es keinen speziellen Bedarf für das Sync Framework 1.0-Format gibt, sollte das Sync Framework 2.0-Format verwendet werden.

Das richtige IReplicaKeyMap-Schnittstelle-Objekt ist erforderlich, um ein Wissensobjekt mit IProviderSyncServices::DeserializeSyncKnowledge zu deserialisieren. Wenn SYNC_SERIALIZE_REPLICA_KEY_MAP für flags angegeben ist, wird das IReplicaKeyMap-Objekt zusammen mit den Wissensdaten serialisiert. Wenn dieses Flag nicht angegeben wird, müssen die IReplicaKeyMap-Daten auf eine andere Weise gespeichert werden, damit das Wissensobjekt deserialisiert werden kann.

Serialisierungsformat

Das in pBuffer enthaltene serialisierte Wissen wird in kompakter Form ohne Leerstellen in Big-Endian-Bytereihenfolge gespeichert.

Wenn targetFormatVersion SYNC_SERIALIZATION_VERSION_V1 ist, wird das Wissen dem in ISyncKnowledge::Serialize beschriebenen Format entsprechend serialisiert. Andernfalls enthält das serialisierte Wissen die folgenden Elemente in der folgenden Reihenfolge.

  1. Ein Headerabschnitt. Der Headerabschnitt enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Version des Serialisierungsformats. Dies ist der in targetFormatVersion enthaltene Wert. Es muss sich um einen gültigen Wert aus der SYNC_SERIALIZATION_VERSION-Enumeration handeln.

    ULONG

    4

    Reserviert. Dieser Wert ist immer 0.

    ULONG

    4

    Die minimal unterstützte Version des serialisierten Wissens.

    ULONG

    4

    Reserviert. Dieser Wert ist immer 0.

  2. Ein Replikatschlüssel-Zuordnungsabschnitt, wenn dwFlags SYNC_SERIALIZE_REPLICA_KEY_MAP enthält. Andernfalls ist kein Replikatschlüssel-Zuordnungsabschnitt vorhanden. Das Format des Replikatschlüssel-Zuordnungsabschnitts wird in IReplicaKeyMap::Serialize definiert.

  3. Eine Signatur, die den nächsten Satz von Abschnitten angibt:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Signatur des Abschnitts. Dieser Wert ist immer 24.

  4. Ein ID-Formatschemaabschnitt. Der ID-Formatschemaabschnitt enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    BOOL

    1

    Gibt an, ob im Wissen enthaltene Replikat-IDs eine feste Länge oder eine variable Länge haben. Dieser Wert beträgt 0, wenn die IDs eine feste Länge haben, oder 1, wenn sie eine variable Länge haben.

    USHORT

    2

    Die Länge von Replikat-IDs in Bytes bei IDs mit fester Länge oder die maximale Länge der ID bei IDs mit variabler Länge.

    BOOL

    1

    Gibt an, ob im Wissen enthaltene Element-IDs eine feste Länge oder eine variable Länge haben. Dieser Wert beträgt 0, wenn die IDs eine feste Länge haben, oder 1, wenn die IDs eine variable Länge haben.

    USHORT

    2

    Die Länge von Element-IDs in Bytes bei IDs mit fester Länge oder die maximale Länge der ID bei IDs mit variabler Länge.

    BOOL

    1

    Gibt an, ob im Wissen enthaltene IDs von Änderungseinheiten eine feste Länge oder eine variable Länge haben. Dieser Wert beträgt 0, wenn die IDs eine feste Länge haben, oder 1, wenn die IDs eine variable Länge haben.

    USHORT

    2

    Die Länge von Änderungseinheit-IDs in Bytes bei IDs mit fester Länge oder die maximale Länge der ID bei IDs mit variabler Länge.

  5. Ein Taktvektor-Tabellenabschnitt. Der Taktvektor-Tabellenabschnitt enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Taktvektor-Tabellensignatur. Dieser Wert ist immer 21.

    ULONG

    4

    Die Anzahl der in der Taktvektortabelle enthaltenen Taktvektoren.

  6. Die Taktvektortabelle enthält eine Liste von Taktvektoren. Die Anzahl der Taktvektoren entspricht dem im vorherigen ULONG angegebenen Wert. Jeder Taktvektor enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Taktvektorsignatur. Dieser Wert beträgt 1, wenn der Taktvektor keine FeedSync-Feedelemente enthält. Wenn der Taktvektor FeedSync-Feedelemente enthält, beträgt der Wert 9.

    ULONG

    4

    Die Anzahl der in diesem Taktvektor enthaltenen Taktvektorelemente.

    Wenn der Taktvektor FeedSync-Feedelemente enthält, ist der folgende Abschnitt im serialisierten Wissen vorhanden (Andernfalls ist dieser nicht vorhanden):

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Anzahl von Aktualisierungen, die am FeedSync-Feed vorgenommen wurden, der diesem Wissen zugeordnet ist. Dieser Wert entspricht dem updates-Attribut des FeedSync-Feeds.

    BYTE

    1

    Gibt an, ob vom FeedSync-Feed Konflikte nachverfolgt werden. Dieser Wert entspricht dem noconflicts-Attribut des FeedSync-Feeds. Dieser Wert beträgt 0, wenn noconflicts nicht festgelegt ist. Andernfalls beträgt der Wert 1.

    Der Rest des Taktvektors enthält eine Liste der Taktvektorelemente. Die Anzahl der Elemente entspricht dem Wert, der zuvor im Taktvektorabschnitt angegeben wurde.

    Jedes Taktvektorelement enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Ein Replikatschlüssel.

    ULONGLONG

    8

    Eine Taktanzahl.

    Wenn das Wissen einem FeedSync-Feed zugeordnet ist, enthält jedes Taktvektorelement die folgenden zusätzlichen Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Der Datumsteil des when-Werts des FeedSync-Feeds.

    ULONG

    4

    Der Uhrzeitteil des when-Werts des FeedSync-Feeds.

    BYTE

    1

    Die dem FeedSync-Feed zugeordneten Flags.

  7. Ein Bereichssatzabschnitt. Der Bereichssatzabschnitt enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Signatur des Bereichssatzabschnitts. Dieser Wert ist immer 23.

    ULONG

    4

    Die Anzahl der in diesem Abschnitt enthaltenen Bereichssätze.

    Der Bereichssatzabschnitt enthält eine Liste von Bereichssätzen. Die Anzahl der Bereichssätze entspricht dem im vorherigen ULONG angegebenen Wert. Der erste Bereichssatz ist der Bereichssatz des Umfangbereichs.

    Jeder Bereichssatz enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Bereichssatzsignatur. Dieser Wert ist immer 22.

    ULONG

    4

    Die Anzahl der in diesem Bereichssatz enthaltenen Bereiche.

    Jeder Bereich im Bereichssatz enthält die folgenden Elemente:

    Bei Element-IDs mit fester Länge:

    Datentyp Länge in Bytes Beschreibung

    Bytefolge

    Die Länge wird im Format der Element-ID angegeben.

    Die Element-ID mit fester Länge, mit der der Bereich beginnt.

    Bei Element-IDs mit variabler Länge:

    Datentyp Länge in Bytes Beschreibung

    USHORT

    2

    Die Länge der ID mit variabler Länge in Bytes. Diese Länge schließt die zwei Bytes für den USHORT ein, der die Länge enthält, sowie die Bytes, die die tatsächliche ID enthalten.

    Bytefolge

    Die im vorherigen USHORT angegebene Länge.

    Die Element-ID mit variabler Länge, mit der der Bereich beginnt.

    Jeder Bereich enthält das folgende zusätzliche Element:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Ein Indexeintrag in der Taktvektortabelle, die in diesen serialisierten Daten enthalten ist.

  8. Ein Spaltensatzabschnitt. Der Spaltensatzabschnitt enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Anzahl der in diesem Abschnitt enthaltenen Spalten.

    Jede Spalte im Spaltensatzabschnitt enthält die folgenden Elemente:

    Bei Änderungseinheit-IDs mit fester Länge:

    Datentyp Länge in Bytes Beschreibung

    Bytefolge

    Die im Format der Änderungseinheit-ID angegebene Länge.

    Die Änderungseinheit-ID mit fester Länge.

    Bei Änderungseinheit-IDs mit variabler Länge:

    Datentyp Länge in Bytes Beschreibung

    USHORT

    2

    Die Länge der ID mit variabler Länge in Bytes. Diese Länge schließt die zwei Bytes für den USHORT ein, der die Länge enthält, sowie die Bytes, die die tatsächliche ID enthalten.

    Bytefolge

    Die im vorherigen USHORT angegebene Länge.

    Die Änderungseinheit-ID mit variabler Länge.

    Jede Spalte im Spaltensatzabschnitt enthält das folgende zusätzliche Element:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Ein Indexeintrag im Bereichssatzabschnitt, der in diesen serialisierten Daten enthalten ist.

  9. Wenn targetFormatVersion SYNC_SERIALIZATION_VERSION_V3 oder höher ist, enthalten die serialisierten Daten einen Markersatzabschnitt. Der Markersatzabschnitt enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Signatur des Markersatzabschnitts. Dieser Wert ist immer 25.

    BOOL

    1

    Gibt an, ob die in diesem Abschnitt aufgeführten Elemente alle Änderungseinheiten enthalten oder alle Änderungseinheiten erfordern. Dieser Wert beträgt 0, wenn Änderungseinheiten vorhanden sind, oder 1, wenn Änderungseinheiten erforderlich sind. Nur einer dieser Markertypen kann vorhanden sein.

    ULONG

    4

    Die Anzahl der in diesem Abschnitt aufgeführten Element-IDs.

    Der Markersatzabschnitt enthält eine Liste von Element-IDs. Die Anzahl der IDs entspricht dem im vorherigen ULONG enthaltenen Wert.

    Jede Element-ID enthält die folgenden Elemente:

    Bei Element-IDs mit fester Länge:

    Datentyp Länge in Bytes Beschreibung

    Bytefolge

    Die Länge wird im Format der Element-ID angegeben.

    Die Element-ID mit fester Länge.

    Bei Element-IDs mit variabler Länge:

    Datentyp Länge in Bytes Beschreibung

    USHORT

    2

    Die Länge der ID mit variabler Länge in Bytes. Diese Länge schließt die zwei Bytes für den USHORT ein, der die Länge enthält, sowie die Bytes, die die tatsächliche ID enthalten.

    Bytefolge

    Die im vorherigen USHORT angegebene Länge.

    Die Element-ID mit variabler Länge.

Siehe auch

Verweis

ISyncKnowledge2-Schnittstelle