Freigeben über


ISyncKnowledge::Serialize

Serialisiert die Wissensobjektdaten in ein Bytearray.

HRESULT Serialize( 
  BOOL fSerializeReplicaKeyMap,
  BYTE *pbKnowledge,
  DWORD *pcbKnowledge);

Parameter

  • fSerializeReplicaKeyMap
    [in] TRUE, um das IReplicaKeyMap-Objekt zu serialisieren, das im Wissen enthalten ist, andernfalls FALSE.
  • pbKnowledge
    [in, out, unique, size_is(*pcbKnowledge)] Das Bytearray, das die serialisierten Wissensdaten empfängt.
  • pcbKnowledge
    [in, out] Gibt die Anzahl der Bytes in pbKnowledge an. Gibt die Anzahl der zum Serialisieren der Replikatschlüssel-Zuordnungsdaten erforderlichen Bytes zurück, wenn pbKnowledge zu klein ist, oder gibt die Anzahl der geschriebenen Bytes zurück.

Rückgabewert

  • S_OK.

  • E_POINTER.

  • E_INVALIDARG.

  • E_OUTOFMEMORY.

  • HRESULT_FROM_WIN32(ERROR_MORE_DATA), wenn pbKnowledge zu klein ist. In diesem Fall wird die erforderliche Anzahl von Bytes in pcbKnowledge zurückgegeben.

Hinweise

Das richtige IReplicaKeyMap-Schnittstelle-Objekt ist erforderlich, um ein Wissensobjekt mit IProviderSyncServices::DeserializeSyncKnowledge zu deserialisieren. Wenn FALSE für fSerializeReplicaKeyMap 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 pbKnowledge enthaltene serialisierte Wissen wird in kompakter Form ohne Leerstellen in Big-Endian-Bytereihenfolge gespeichert. Das serialisierte Wissen enthält folgende Elemente in folgender Reihenfolge.

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

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Hauptversion des Serialisierungsformats. Dieser Wert ist immer 3.

    ULONG

    4

    Die Nebenversion des Serialisierungsformats. Dieser Wert ist immer 0.

  2. Ein Replikatschlüssel-Zuordnungsabschnitt, wenn fSerializeReplicaKeyMap TRUE ist. Andernfalls ist kein Replikatschlüssel-Zuordnungsabschnitt vorhanden. Das Format des Replikatschlüssel-Zuordnungsabschnitts wird in IReplicaKeyMap::Serialize definiert.

  3. 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 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.

  4. Ein Bereichstakt-Vektorabschnitt. Der Bereichstakt-Vektorabschnitt 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 er 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 Taktvektorabschnitts 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.

  5. Ein Bereichsausnahmeabschnitt. Der Bereichsausnahmeabschnitt enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Signatur des Bereichsausnahmeabschnitts. Dieser Wert ist immer 3.

    ULONG

    4

    Die Anzahl von Bereichsausnahmen, die im Wissen enthalten sind.

    Der Bereichsausnahmeabschnitt enthält eine Liste von Bereichsausnahmen, wobei die Anzahl der Bereichsausnahmen dem im vorherigen ULONG angegebenen Wert entspricht.

    Jeder Bereichsausnahmeabschnitt enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Bereichsausnahmesignatur. Dieser Wert beträgt immer 2.

    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 der unteren Grenze der Element-ID für den Bereich.

    Bytefolge

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

    Die Element-ID mit fester Länge der oberen Grenze der Element-ID für den Bereich.

    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 der unteren Grenze der Element-ID für den Bereich.

    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 der oberen Grenze der Element-ID für den Bereich.

    Der Taktvektor, der dieser Bereichsausnahme zugeordnet ist:

    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 er 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.

  6. Ein Abschnitt einzelner Elementausnahmen. Der Abschnitt einzelner Elementausnahmen enthält die folgenden Elemente:

    Datentyp Länge in Bytes Beschreibung

    ULONG

    4

    Die Signatur des Abschnitts einzelner Elementausnahmen. Dieser Wert ist immer 6.

    ULONG

    4

    Die Taktvektor-Tabellensignatur. Dieser Wert ist immer 4.

    ULONG

    4

    Die Anzahl der in der Taktvektortabelle enthaltenen Taktvektoren.

    1. Eine Taktvektortabelle. 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 er 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.

    2. Eine Tabelle einzelner Elementausnahmen. Die Tabelle einzelner Elementausnahmen enthält die folgenden Elemente:

      Datentyp Länge in Bytes Beschreibung

      ULONG

      4

      Die Anzahl einzelner Elementausnahmen, die in der Tabelle einzelner Elementausnahmen enthalten sind.

      Jede einzelne Elementausnahme in der Tabelle 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, die der einzelnen Elementausnahme zugeordnet ist.

      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, die der einzelnen Elementausnahme zugeordnet ist.

      Jede einzelne Elementausnahme enthält die folgenden zusätzlichen Elemente:

      Datentyp Länge in Bytes Beschreibung

      ULONG

      4

      Wenn die einzelne Elementausnahme auf ein Element verweist, handelt es sich bei diesem Wert um einen Indexeintrag in der Taktvektortabelle, die in diesen serialisierten Daten enthalten ist. Wenn die einzelne Elementausnahme auf eine oder mehrere Änderungseinheitsausnahmen verweist, ist dieser Wert 0xFFFFFFFF.

      ULONG

      4

      Die Anzahl der Ausnahmen von Änderungseinheiten, die in der Ausnahme enthalten sind. Dieser Wert beträgt möglicherweise 0.

      Wenn Ausnahmen von Änderungseinheiten vorhanden sind, folgt eine Liste der Ausnahmen von Änderungseinheiten. Die Liste enthält die Anzahl der im vorherigen ULONG angegebenen Ausnahmen von Änderungseinheiten.

      Jede Ausnahme von Änderungseinheiten 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, die der Ausnahme der Änderungseinheit zugeordnet ist.

      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, die der Ausnahme der Änderungseinheit zugeordnet ist.

      Jede Ausnahme von Änderungseinheiten 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.

Siehe auch

Verweis

ISyncKnowledge-Schnittstelle