Compartir a través de


ISyncKnowledge2::SerializeWithOptions

Serializa los datos del objeto de conocimiento en una matriz de bytes basada en la versión especificada y en las opciones de serialización.

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

Parámetros

Término

Definición

targetFormatVersion

[in] El conocimiento serializado es compatible con esta versión.

dwFlags

[in] Opciones que especifican información adicional acerca de cómo serializar el objeto. Debe ser 0 o una combinación de los valores que especifican las marcas SYNC_SERIALIZE. Cuando se especifica 0, no se incluye el mapa de claves de réplica como parte de los datos de conocimiento serializados.

pBuffer

[in, out, unique, size_is(*pdwSerializedSize)] Búfer donde se serializan los datos del objeto de conocimiento serializados.

pdwSerializedSize

[in, out] Especifica el número de bytes de pBuffer. Devuelve el número de bytes necesarios para serializar los datos de conocimiento si pBuffer es demasiado pequeño o bien el número de bytes escritos.

Valor devuelto

  • S_OK

  • E_POINTER

  • HRESULT_FROM_WIN32(ERROR_MORE_DATA) si pBuffer es demasiado pequeño. En esta situación, el número necesario de bytes se devuelve en pdwSerializedSize.

  • SYNC_E_INVALID_VERSION cuando el valor de targetFormatVersion es mayor que la versión del objeto o cuando el objeto contiene elementos que no son compatibles con targetFormatVersion.

Notas

El valor de targetFormatVersion determina el formato de los datos de conocimiento serializados. Cuando se especifica SYNC_SERIALIZATION_VERSION_V1, el formato serializado es compatible con componentes de Sync Framework 1.0 y versiones posteriores. Cuando se especifica SYNC_SERIALIZATION_VERSION_V2, el formato serializado es compatible con los componentes de Sync Framework 2.0. Si se especifica SYNC_SERIALIZATION_VERSION_V2 cuando el objeto de conocimiento contiene elementos que no son compatibles con Sync Framework 1.0, se devuelve SYNC_E_INVALID_VERSION. Por ejemplo, el conocimiento que devuelve ISyncKnowledge2::ProjectOntoColumnSet contiene elementos que se introdujeron en Sync Framework 2.0 y, por tanto, no se puede serializar con el valor SYNC_SERIALIZATION_VERSION_V1 especificado en targetFormatVersion.

Nota

La serialización en el formato de Sync Framework 1.0 es menos eficaz que en el formato de Sync Framework 2.0. A menos que exista una necesidad concreta para usar el formato de Sync Framework 1.0, se debe utilizar el formato de Sync Framework 2.0.

Para deserializar un objeto de conocimiento mediante IProviderSyncServices::DeserializeSyncKnowledge, se precisa el objeto Interfaz IReplicaKeyMap apropiado. Cuando se especifica SYNC_SERIALIZE_REPLICA_KEY_MAP en flags, 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 pBuffer se almacena con un formato compacto, sin margen y en orden de byte big-endian.

Si targetFormatVersion es SYNC_SERIALIZATION_VERSION_V1, el conocimiento se serializa según el formato descrito en ISyncKnowledge::Serialize. En caso contrario, 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 del formato de serialización. Es el valor incluido en targetFormatVersion y debe ser un valor válido de la enumeración SYNC_SERIALIZATION_VERSION.

    ULONG

    4

    Reservado. Este valor siempre es 0.

    ULONG

    4

    La versión mínima admitida del conocimiento serializado.

    ULONG

    4

    Reservado. Este valor siempre es 0.

  2. Una sección de mapa de claves de réplica si dwFlags contiene SYNC_SERIALIZE_REPLICA_KEY_MAP. 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. Firma que indica el próximo conjunto de secciones:

    Tipo de datos Longitud en bytes Descripción

    ULONG

    4

    Firma de la sección. Este valor siempre es 24.

  4. 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 réplica 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 réplica 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 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.

  5. Una sección de tabla de vectores de reloj. Esta sección contiene los elementos siguientes:

    Tipo de datos Longitud en bytes Descripción

    ULONG

    4

    Firma de la tabla de vectores de reloj. Este valor siempre es 21.

    ULONG

    4

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

  6. 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 se incluye la siguiente sección; en caso contrario, no se incluye:

    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.

  7. Una sección de conjuntos de intervalos. Esta sección contiene los elementos siguientes:

    Tipo de datos Longitud en bytes Descripción

    ULONG

    4

    Firma de la sección de conjunto de intervalos. Este valor siempre es 23.

    ULONG

    4

    Número de conjuntos de intervalos incluidos en esta sección.

    La sección de conjuntos de intervalos contiene una lista de conjuntos de intervalos cuyo número es igual al valor especificado en el valor ULONG anterior. El primer conjunto de intervalos es el conjunto de intervalos del ámbito.

    Cada conjunto de intervalos contiene los elementos siguientes:

    Tipo de datos Longitud en bytes Descripción

    ULONG

    4

    Firma del conjunto de intervalos. Este valor siempre es 22.

    ULONG

    4

    Número de intervalos incluidos en este conjunto de intervalos.

    Cada intervalo del conjunto 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 que comienza el 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 que comienza el intervalo.

    Cada intervalo 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.

  8. Una sección de conjuntos de columnas. Esta sección contiene los elementos siguientes:

    Tipo de datos Longitud en bytes Descripción

    ULONG

    4

    Número de columnas que se incluyen en esta sección.

    Cada columna de la sección de conjuntos de columnas 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.

    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.

    Cada columna de la sección de conjuntos de columnas contiene el elemento adicional siguiente:

    Tipo de datos Longitud en bytes Descripción

    ULONG

    4

    Índice en la sección de conjuntos de intervalos que se incluye en estos datos serializados.

  9. Si targetFormatVersion es SYNC_SERIALIZATION_VERSION_V3 o posterior, los datos serializados contienen una sección de conjuntos de marcadores. Esta sección contiene los elementos siguientes:

    Tipo de datos Longitud en bytes Descripción

    ULONG

    4

    Firma de la sección de conjuntos de marcadores. Este valor siempre es 25.

    BOOL

    1

    Indica si los elementos incluidos en esta sección contienen todas las unidades de cambio o requieren todas las unidades de cambio. Este valor es 0 cuando las unidades de cambio están presentes ó 1 cuando se requieren unidades de cambio. Solo puede estar presente uno de estos tipos de marcadores.

    ULONG

    4

    Número de identificadores de elemento incluidos en esta sección.

    La sección de conjuntos de marcadores contiene una lista de identificadores de elemento, cuyo número es igual al valor incluido en el valor ULONG anterior.

    Cada identificador de elemento 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.

    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.

Vea también

Referencia

Interfaz ISyncKnowledge2