ISyncKnowledge::Serialize

Serializa los datos del objeto de conocimiento en una matriz de bytes.

Sintaxis

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

Parámetros

  • fSerializeReplicaKeyMap
    [in] TRUE para serializar el objeto IReplicaKeyMap contenido en el conocimiento; en caso contrario, FALSE.

  • pbKnowledge
    [in, out, unique, size_is(*pcbKnowledge)] Matriz de bytes que recibe los datos de conocimiento serializados.

  • pcbKnowledge
    [in, out] Especifica el número de bytes de pbKnowledge. Devuelve el número de bytes necesarios para serializar los datos de mapa de claves de réplica si pbKnowledge es demasiado pequeño, o devuelve el número de bytes escritos.

Valor devuelto

  • S_OK

  • E_POINTER

  • E_INVALIDARG

  • E_OUTOFMEMORY

  • HRESULT_FROM_WIN32(ERROR_MORE_DATA) si pbKnowledge es demasiado pequeño. En este caso, el número necesario de bytes se devuelve en pcbKnowledge.

Notas

Para deserializar un objeto de conocimiento mediante IProviderSyncServices::DeserializeSyncKnowledge, se precisa el objeto Interfaz IReplicaKeyMap apropiado. Cuando se especifica FALSE en fSerializeReplicaKeyMap, se serializa el objeto IReplicaKeyMap junto con los datos de conocimiento. Cuando no se especifica esta marca, los datos de IReplicaKeyMap se deben almacenar de alguna otra manera para que se pueda deserializar el objeto de conocimiento.

Formato de serialización

El conocimiento serializado incluido en pbKnowledge se almacena con un formato compacto, sin margen y en orden de byte big-endian. El conocimiento serializado contiene los elementos siguientes, en el orden siguiente.

  1. Una sección de encabezado. La sección de encabezado contiene los elementos siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Versión principal del formato de serialización. Este valor siempre es 3.

    ULONG

    4

    Versión secundaria del formato de serialización. Este valor siempre es 0.

  2. Una sección de mapa de claves de réplica cuando fSerializeReplicaKeyMap es TRUE. En caso contrario, no existe ninguna sección de mapa de claves de réplica. El formato de esta sección se define en IReplicaKeyMap::Serialize.

  3. Una sección de esquema de formato de identificador. Esta sección contiene los elementos siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    BOOL

    1

    Indica si los identificadores de elemento incluidos en el conocimiento son de longitud fija o de longitud variable. Este valor es 0 si los identificadores son de longitud fija ó 1 si son de longitud variable.

    USHORT

    2

    La longitud, en bytes, de los identificadores de elemento en el caso de los identificadores de longitud fija o la longitud máxima del identificador en el caso de los identificadores de longitud variable.

    BOOL

    1

    Indica si los identificadores de unidad de cambio incluidos en el conocimiento son de longitud fija o de longitud variable. Este valor es 0 si los identificadores son de longitud fija ó 1 si son de longitud variable.

    USHORT

    2

    Longitud, en bytes, de los identificadores de la unidad de cambio en el caso de los identificadores de longitud fija o la longitud máxima del identificador en el caso de los identificadores de longitud variable.

  4. Una sección de vector de reloj de ámbito. Esta sección contiene los elementos siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Firma del vector de reloj. Este valor es 1 cuando el vector de reloj no contiene elementos de fuente de FeedSync; si el vector contiene estos elementos, el valor es 9.

    ULONG

    4

    Número de elementos de vector de reloj incluidos en este vector de reloj.

    Si el vector de reloj contiene elementos de fuente de FeedSync, en el conocimiento serializado existe la sección siguiente. En caso contrario, no existe:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Número de actualizaciones realizadas en la fuente de FeedSync asociada a este conocimiento. Este valor corresponde al atributo updates de la fuente de FeedSync.

    BYTE

    1

    Indica si la fuente de FeedSync realiza un seguimiento de los conflictos. Este valor corresponde al atributo noconflicts de la fuente de FeedSync. Este valor es 0 cuando no se establece noconflicts; de lo contrario, el valor es 1.

    El resto de la sección de vector de reloj contiene una lista de los elementos de vector de reloj, cuyo número de elementos es igual al valor especificado previamente en la sección de vector de reloj.

    Cada elemento de vector de reloj contiene los elementos siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Una clave de réplica.

    ULONGLONG

    8

    Un contador.

    Cuando el conocimiento está asociado a una fuente de FeedSync, cada elemento de vector de reloj contiene los elementos adicionales siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Parte de fecha del valor when de la fuente de FeedSync.

    ULONG

    4

    Parte de hora del valor when de la fuente de FeedSync.

    BYTE

    1

    Marcas asociadas a la fuente de FeedSync.

  5. Una sección de excepciones de intervalo. Esta sección contiene los elementos siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Firma de la sección de excepciones de intervalo. Este valor siempre es 3.

    ULONG

    4

    Número de excepciones de intervalo incluidas en el conocimiento.

    La sección de excepciones de intervalo contiene una lista de excepciones de intervalo, cuyo número es igual al valor especificado en el valor ULONG anterior.

    Cada excepción de intervalo contiene los elementos siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Firma de la excepción de intervalo. Este valor siempre es 2.

    Si los identificadores de elemento son de longitud fija:

    Tipo de datos

    Longitud en bytes

    Descripción

    Secuencia de bytes

    Longitud especificada en el formato del identificador de elemento.

    Identificador de elemento de longitud fija del identificador de límite inferior del intervalo.

    Secuencia de bytes

    Longitud especificada en el formato del identificador de elemento.

    Identificador de elemento de longitud fija del identificador de límite superior del intervalo.

    O bien, si los identificadores de elemento son de longitud variable:

    Tipo de datos

    Longitud en bytes

    Descripción

    USHORT

    2

    Longitud, en bytes, del identificador de longitud variable. Esta longitud incluye los dos bytes del elemento USHORT que contiene la longitud, además de los bytes que contienen el identificador real.

    Secuencia de bytes

    Longitud especificada en el elemento USHORT anterior.

    Identificador de elemento de longitud variable del identificador de límite inferior del intervalo.

    USHORT

    2

    Longitud, en bytes, del identificador de longitud variable. Esta longitud incluye los dos bytes del elemento USHORT que contiene la longitud, además de los bytes que contienen el identificador real.

    Secuencia de bytes

    Longitud especificada en el elemento USHORT anterior.

    Identificador de elemento de longitud variable del identificador de límite superior del intervalo.

    Vector de reloj asociado a la excepción de intervalo:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Firma del vector de reloj. Este valor es 1 cuando el vector de reloj no contiene elementos de fuente de FeedSync; si el vector contiene estos elementos, el valor es 9.

    ULONG

    4

    Número de elementos de vector de reloj incluidos en este vector de reloj.

    Si el vector de reloj contiene elementos de fuente de FeedSync, en el conocimiento serializado existe la sección siguiente. En caso contrario, no existe:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Número de actualizaciones realizadas en la fuente de FeedSync asociada a este conocimiento. Este valor corresponde al atributo updates de la fuente de FeedSync.

    BYTE

    1

    Indica si la fuente de FeedSync realiza un seguimiento de los conflictos. Este valor corresponde al atributo noconflicts de la fuente de FeedSync. Este valor es 0 cuando no se establece noconflicts; de lo contrario, el valor es 1.

    El resto del vector de reloj contiene una lista de los elementos de vector de reloj, cuyo número de elementos es igual al valor especificado previamente en la sección de vector de reloj.

    Cada elemento de vector de reloj contiene los elementos siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Una clave de réplica.

    ULONGLONG

    8

    Un contador.

    Cuando el conocimiento está asociado a una fuente de FeedSync, cada elemento de vector de reloj contiene los elementos adicionales siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Parte de fecha del valor when de la fuente de FeedSync.

    ULONG

    4

    Parte de hora del valor when de la fuente de FeedSync.

    BYTE

    1

    Marcas asociadas a la fuente de FeedSync.

  6. Una sección de excepciones de un solo elemento. Esta sección contiene los elementos siguientes:

    Tipo de datos

    Longitud en bytes

    Descripción

    ULONG

    4

    Firma de la sección de excepciones de un solo elemento. Este valor siempre es 6.

    ULONG

    4

    Firma de la tabla de vectores de reloj. Este valor siempre se 4.

    ULONG

    4

    Número de vectores de reloj incluidos en la tabla de vectores de reloj.

    1. Tabla de vectores de reloj. La tabla de vectores de reloj contiene una lista de vectores de reloj, cuyo número es igual al valor especificado en el valor ULONG anterior. Cada vector de reloj contiene los elementos siguientes:

      Tipo de datos

      Longitud en bytes

      Descripción

      ULONG

      4

      Firma del vector de reloj. Este valor es 1 cuando el vector de reloj no contiene elementos de fuente de FeedSync; si el vector contiene estos elementos, el valor es 9.

      ULONG

      4

      Número de elementos de vector de reloj incluidos en este vector de reloj.

      Si el vector de reloj contiene elementos de fuente de FeedSync, en el conocimiento serializado existe la sección siguiente. En caso contrario, no existe:

      Tipo de datos

      Longitud en bytes

      Descripción

      ULONG

      4

      Número de actualizaciones realizadas en la fuente de FeedSync asociada a este conocimiento. Este valor corresponde al atributo updates de la fuente de FeedSync.

      BYTE

      1

      Indica si la fuente de FeedSync realiza un seguimiento de los conflictos. Este valor corresponde al atributo noconflicts de la fuente de FeedSync. Este valor es 0 cuando no se establece noconflicts; de lo contrario, el valor es 1.

      El resto del vector de reloj contiene una lista de los elementos de vector de reloj, cuyo número de elementos es igual al valor especificado previamente en la sección de vector de reloj.

      Cada elemento de vector de reloj contiene los elementos siguientes:

      Tipo de datos

      Longitud en bytes

      Descripción

      ULONG

      4

      Una clave de réplica.

      ULONGLONG

      8

      Un contador.

      Cuando el conocimiento está asociado a una fuente de FeedSync, cada elemento de vector de reloj contiene los elementos adicionales siguientes:

      Tipo de datos

      Longitud en bytes

      Descripción

      ULONG

      4

      Parte de fecha del valor when de la fuente de FeedSync.

      ULONG

      4

      Parte de hora del valor when de la fuente de FeedSync.

      BYTE

      1

      Marcas asociadas a la fuente de FeedSync.

    2. Tabla de excepciones de un solo elemento. Esta tabla contiene los elementos siguientes:

      Tipo de datos

      Longitud en bytes

      Descripción

      ULONG

      4

      Número de excepciones de un solo elemento incluidas en la tabla de excepciones de un solo elemento.

      Cada excepción de un solo elemento de la tabla contiene los elementos siguientes.

      Si los identificadores de elemento son de longitud fija:

      Tipo de datos

      Longitud en bytes

      Descripción

      Secuencia de bytes

      Longitud especificada en el formato del identificador de elemento.

      Identificador de elemento de longitud fija asociado a la excepción de un solo elemento.

      O bien, si los identificadores de elemento son de longitud variable:

      Tipo de datos

      Longitud en bytes

      Descripción

      USHORT

      2

      Longitud, en bytes, del identificador de longitud variable. Esta longitud incluye los dos bytes del elemento USHORT que contiene la longitud, además de los bytes que contienen el identificador real.

      Secuencia de bytes

      Longitud especificada en el elemento USHORT anterior.

      Identificador de elemento de longitud variable asociado a la excepción de un solo elemento.

      Cada excepción de un solo elemento contiene los elementos adicionales siguientes:

      Tipo de datos

      Longitud en bytes

      Descripción

      ULONG

      4

      Cuando la excepción de un solo elemento hace referencia a un elemento, este valor es un índice en la tabla de vectores de reloj incluida en estos datos serializados. Cuando hace referencia a una o más excepciones de unidad de cambio, este valor es 0xFFFFFFFF.

      ULONG

      4

      Número de excepciones de unidad de cambio incluidas en la excepción. Este valor puede ser 0.

      Cuando existen excepciones de unidad de cambio, sigue una lista de excepciones de unidad de cambio. La lista contiene el número de excepciones de unidad de cambio especificadas en el valor ULONG anterior.

      Cada excepción de unidad de cambio contiene los elementos siguientes.

      Si los identificadores de unidad de cambio son de longitud fija:

      Tipo de datos

      Longitud en bytes

      Descripción

      Secuencia de bytes

      Longitud especificada en el formato del identificador de unidad de cambio.

      Identificador de unidad de cambio de longitud fija asociado a la excepción de unidad de cambio.

      O bien, si los identificadores de unidad de cambio son de longitud variable:

      Tipo de datos

      Longitud en bytes

      Descripción

      USHORT

      2

      Longitud, en bytes, del identificador de longitud variable. Esta longitud incluye los dos bytes del elemento USHORT que contiene la longitud, además de los bytes que contienen el identificador real.

      Secuencia de bytes

      Longitud especificada en el elemento USHORT anterior.

      Identificador de unidad de cambio de longitud variable asociado a la excepción de unidad de cambio.

      Cada excepción de unidad de cambio contiene el elemento adicional siguiente:

      Tipo de datos

      Longitud en bytes

      Descripción

      ULONG

      4

      Índice en la tabla de vectores de reloj que se incluye en estos datos serializados.

Vea también

Otros recursos

Interfaz ISyncKnowledge