ISyncKnowledge::Serialize
Sérialise les données de l'objet de connaissance en tableau d'octets.
Syntaxe
HRESULT Serialize(
BOOL fSerializeReplicaKeyMap,
BYTE *pbKnowledge,
DWORD *pcbKnowledge);
Paramètres
fSerializeReplicaKeyMap
[in] TRUE pour sérialiser l'objet IReplicaKeyMap contenu dans la connaissance ; sinon, FALSE.pbKnowledge
[in, out, unique, size_is(*pcbKnowledge)] Tableau d'octets qui reçoit les données de connaissance sérialisées.pcbKnowledge
[in, out] Spécifie le nombre d'octets contenus dans pbKnowledge. Retourne le nombre d'octets requis pour sérialiser les données de mappage de clés de réplica lorsque pbKnowledge est trop petit, ou retourne le nombre d'octets écrits.
Valeur de retour
S_OK.
E_POINTER.
E_INVALIDARG.
E_OUTOFMEMORY.
HRESULT_FROM_WIN32(ERROR_MORE_DATA) lorsque pbKnowledge est trop petit. Dans ce cas, le nombre requis d'octets est retourné dans pcbKnowledge.
Notes
L'objet Interface IReplicaKeyMap approprié est requis pour désérialiser un objet de connaissance en utilisant IProviderSyncServices::DeserializeSyncKnowledge. Lorsque FALSE est spécifié pour fSerializeReplicaKeyMap, l'objet IReplicaKeyMap est sérialisé avec les données de connaissance. Lorsque cet indicateur n'est pas spécifié, les données IReplicaKeyMap doivent être stockées d'une autre manière afin que l'objet de connaissance puisse être désérialisé.
Format de sérialisation
La connaissance sérialisée contenue dans pbKnowledge est stockée dans un format compact, sans remplissage, dans l'ordre d'octet avec primauté des octets de poids fort (big-endian). La connaissance sérialisée contient les éléments ci-après, dans l'ordre suivant.
Une section d'en-tête. La section d'en-tête contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Version principale du format de sérialisation. Cette valeur est toujours 3.
ULONG
4
Version secondaire du format de sérialisation. Cette valeur est toujours 0.
Une section de mappage de clés de réplica lorsque fSerializeReplicaKeyMap est TRUE. Sinon, aucune section de mappage de clés de réplica n'est présente. Le format de la section de mappage de clés de réplica est défini dans IReplicaKeyMap::Serialize.
Une section de schéma de format d'ID. La section de schéma de format d'ID contient les éléments suivants :
Type de données
Longueur en octets
Description
BOOL
1
Indique si les ID d'élément contenus dans la connaissance sont de longueur fixe ou de longueur variable. Cette valeur est 0 si les ID sont de longueur fixe ou 1 si les ID sont de longueur variable.
USHORT
2
Longueur, en octets, des ID d'élément pour les ID de longueur fixe, ou la longueur maximale de l'ID pour les ID de longueur variable.
BOOL
1
Indique si les ID d'unité de modification contenus dans la connaissance sont de longueur fixe ou de longueur variable. Cette valeur est 0 si les ID sont de longueur fixe ou 1 si les ID sont de longueur variable.
USHORT
2
La longueur, en octets, des ID d'unité de modification pour les ID de longueur fixe, ou la longueur maximale de l'ID pour les ID de longueur variable.
Une section de vecteur horloge d'étendue. La section de vecteur horloge d'étendue contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Signature du vecteur horloge. Cette valeur est 1 lorsque le vecteur horloge ne contient pas d'éléments de flux FeedSync ; dans le cas contraire, la valeur est 9.
ULONG
4
Nombre d'éléments de vecteur horloge contenus dans ce vecteur horloge.
Lorsque le vecteur horloge contient des éléments de flux FeedSync, la section suivante existe dans la connaissance sérialisée. Dans le cas contraire, elle n'existe pas :
Type de données
Longueur en octets
Description
ULONG
4
Nombre de mises à jour apportées au flux FeedSync qui est associé à cette connaissance. Cette valeur correspond à l'attribut updates du flux FeedSync.
BYTE
1
Indique si le flux FeedSync effectue le suivi des conflits. Cette valeur correspond à l'attribut noconflicts du flux FeedSync. Cette valeur est 0 lorsque noconflicts n'est pas défini ; sinon, la valeur est 1.
Le reste de la section de vecteur horloge contient la liste des éléments de vecteur horloge, avec le nombre d'éléments égal à la valeur spécifiée précédemment dans la section de vecteur horloge.
Chaque élément de vecteur horloge contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Clé de réplica.
ULONGLONG
8
Nombre de cycles.
Lorsque la connaissance est associée à un flux FeedSync, chaque élément de vecteur horloge contient les éléments supplémentaires suivants :
Type de données
Longueur en octets
Description
ULONG
4
Partie date de la valeur when du flux FeedSync.
ULONG
4
Partie heure de la valeur when du flux FeedSync.
BYTE
1
Indicateurs associés au flux FeedSync.
Une section d'exception de plage. La section d'exception de plage contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Signature de la section d'exception de plage. Cette valeur est toujours 3.
ULONG
4
Nombre des exceptions de plages contenues dans la connaissance.
La section d'exception de plage contient la liste des exceptions de plages, avec le nombre d'exceptions de plages égal à la valeur spécifiée dans l'ULONG précédent.
Chaque exception de plage contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Signature de l'exception de plage. Cette valeur est toujours 2.
Lorsque les ID d'élément sont de longueur fixe :
Type de données
Longueur en octets
Description
Séquence d'octets
Longueur spécifiée dans le format d'ID d'élément.
ID d'élément de longueur fixe de l'ID d'élément de limite inférieure pour la plage.
Séquence d'octets
Longueur spécifiée dans le format d'ID d'élément.
ID d'élément de longueur fixe de l'ID d'élément de limite supérieure pour la plage.
Ou, lorsque les ID d'élément sont de longueur variable :
Type de données
Longueur en octets
Description
USHORT
2
Longueur, en octets, de l'ID de longueur variable. Cette longueur inclut les deux octets pour l'USHORT qui contient la longueur, plus les octets qui contiennent l'ID réel.
Séquence d'octets
Longueur spécifiée dans l'USHORT précédent.
ID d'élément de longueur variable de l'ID d'élément de limite inférieure pour la plage.
USHORT
2
Longueur, en octets, de l'ID de longueur variable. Cette longueur inclut les deux octets pour l'USHORT qui contient la longueur, plus les octets qui contiennent l'ID réel.
Séquence d'octets
Longueur spécifiée dans l'USHORT précédent.
ID d'élément de longueur variable de l'ID d'élément de limite supérieure pour la plage.
Vecteur horloge associé à l'exception de plage.
Type de données
Longueur en octets
Description
ULONG
4
Signature du vecteur horloge. Cette valeur est 1 lorsque le vecteur horloge ne contient pas d'éléments de flux FeedSync ; dans le cas contraire, la valeur est 9.
ULONG
4
Nombre d'éléments de vecteur horloge contenus dans ce vecteur horloge.
Lorsque le vecteur horloge contient des éléments de flux FeedSync, la section suivante existe dans la connaissance sérialisée. Dans le cas contraire, elle n'existe pas :
Type de données
Longueur en octets
Description
ULONG
4
Nombre de mises à jour apportées au flux FeedSync qui est associé à cette connaissance. Cette valeur correspond à l'attribut updates du flux FeedSync.
BYTE
1
Indique si le flux FeedSync effectue le suivi des conflits. Cette valeur correspond à l'attribut noconflicts du flux FeedSync. Cette valeur est 0 lorsque noconflicts n'est pas défini ; sinon, la valeur est 1.
Le reste du vecteur horloge contient la liste des éléments de vecteur horloge, avec le nombre d'éléments égal à la valeur spécifiée précédemment dans la section de vecteur horloge.
Chaque élément de vecteur horloge contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Clé de réplica.
ULONGLONG
8
Nombre de cycles.
Lorsque la connaissance est associée à un flux FeedSync, chaque élément de vecteur horloge contient les éléments supplémentaires suivants :
Type de données
Longueur en octets
Description
ULONG
4
Partie date de la valeur when du flux FeedSync.
ULONG
4
Partie heure de la valeur when du flux FeedSync.
BYTE
1
Indicateurs associés au flux FeedSync.
Une section d'exceptions d'élément uniques. La section d'exceptions d'élément uniques contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Signature de la section d'exceptions d'élément uniques. Cette valeur est toujours 6.
ULONG
4
Signature de la table de vecteurs horloge. Cette valeur est toujours 4.
ULONG
4
Nombre de vecteurs horloge contenus dans la table de vecteurs horloge.
Table de vecteurs horloge. La table de vecteurs horloge contient une liste de vecteurs horloge, avec le nombre de vecteurs horloge égal à la valeur spécifiée dans l'ULONG précédent. Chaque vecteur horloge contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Signature du vecteur horloge. Cette valeur est 1 lorsque le vecteur horloge ne contient pas d'éléments de flux FeedSync ; dans le cas contraire, la valeur est 9.
ULONG
4
Nombre d'éléments de vecteur horloge contenus dans ce vecteur horloge.
Lorsque le vecteur horloge contient des éléments de flux FeedSync, la section suivante existe dans la connaissance sérialisée. Dans le cas contraire, elle n'existe pas :
Type de données
Longueur en octets
Description
ULONG
4
Nombre de mises à jour apportées au flux FeedSync qui est associé à cette connaissance. Cette valeur correspond à l'attribut updates du flux FeedSync.
BYTE
1
Indique si le flux FeedSync effectue le suivi des conflits. Cette valeur correspond à l'attribut noconflicts du flux FeedSync. Cette valeur est 0 lorsque noconflicts n'est pas défini ; sinon, la valeur est 1.
Le reste du vecteur horloge contient la liste des éléments de vecteur horloge, avec le nombre d'éléments égal à la valeur spécifiée précédemment dans la section de vecteur horloge.
Chaque élément de vecteur horloge contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Clé de réplica.
ULONGLONG
8
Nombre de cycles.
Lorsque la connaissance est associée à un flux FeedSync, chaque élément de vecteur horloge contient les éléments supplémentaires suivants :
Type de données
Longueur en octets
Description
ULONG
4
Partie date de la valeur when du flux FeedSync.
ULONG
4
Partie heure de la valeur when du flux FeedSync.
BYTE
1
Indicateurs associés au flux FeedSync.
Table d'exceptions d'élément uniques. La table d'exceptions d'élément uniques contient les éléments suivants :
Type de données
Longueur en octets
Description
ULONG
4
Nombre d'exceptions d'élément uniques contenues dans la table d'exceptions d'élément uniques.
Chaque exception d'élément unique dans la table contient les éléments suivants.
Lorsque les ID d'élément sont de longueur fixe :
Type de données
Longueur en octets
Description
Séquence d'octets
Longueur spécifiée dans le format d'ID d'élément.
ID d'élément de longueur fixe associé à l'exception d'élément unique.
Ou, lorsque les ID d'élément sont de longueur variable :
Type de données
Longueur en octets
Description
USHORT
2
Longueur, en octets, de l'ID de longueur variable. Cette longueur inclut les deux octets pour l'USHORT qui contient la longueur, plus les octets qui contiennent l'ID réel.
Séquence d'octets
Longueur spécifiée dans l'USHORT précédent.
ID d'élément de longueur variable associé à l'exception d'élément unique.
Chaque exception d'élément unique contient les éléments supplémentaires suivants :
Type de données
Longueur en octets
Description
ULONG
4
Lorsque l'exception d'élément unique fait référence à un élément, cette valeur est un index dans la table de vecteurs horloge contenue dans ces données sérialisées. Lorsque l'exception d'élément unique fait référence à une ou plusieurs exceptions d'unité de modification, cette valeur est 0xFFFFFFFF.
ULONG
4
Nombre d'exceptions d'unité de modification contenues dans l'exception. Cette valeur peut être 0.
Lorsque des exceptions d'unité de modification sont présentes, une liste d'exceptions d'unité de modification suit. La liste contient le nombre d'exceptions d'unité de modification spécifié dans l'ULONG précédent.
Chaque exception d'unité de modification contient les éléments suivants.
Lorsque les ID d'unité de modification sont de longueur fixe :
Type de données
Longueur en octets
Description
Séquence d'octets
Longueur spécifiée dans le format des ID d'unité de modification.
ID d'unité de modification de longueur fixe associée à l'exception d'unité de modification.
Ou, lorsque les ID d'unité de modification sont de longueur variable :
Type de données
Longueur en octets
Description
USHORT
2
Longueur, en octets, de l'ID de longueur variable. Cette longueur inclut les deux octets pour l'USHORT qui contient la longueur, plus les octets qui contiennent l'ID réel.
Séquence d'octets
Longueur spécifiée dans l'USHORT précédent.
ID d'unité de modification de longueur variable associé à l'exception d'unité de modification.
Chaque exception d'unité de modification contient l'élément supplémentaire suivant :
Type de données
Longueur en octets
Description
ULONG
4
Index dans la table de vecteurs horloge contenue dans ces données sérialisées.