Compartilhar via


ISyncKnowledge::Serialize

Serializa os dados do objeto de conhecimento para uma matriz de bytes.

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

Parâmetros

  • fSerializeReplicaKeyMap
    [in] TRUE para serializar o objeto IReplicaKeyMap contido no conhecimento; caso contrário, FALSE.
  • pbKnowledge
    [in, out, unique, size_is(*pcbKnowledge)] A matriz de bytes que recebe os dados de conhecimento serializados.
  • pcbKnowledge
    [in, out] Especifica o número de bytes em pbKnowledge. Retorna o número de bytes necessários para serializar os dados do mapa de chave de réplica quando pbKnowledge é muito pequeno, ou retorna o número de bytes gravados.

Valor de retorno

  • S_OK.

  • E_POINTER.

  • E_INVALIDARG.

  • E_OUTOFMEMORY.

  • HRESULT_FROM_WIN32(ERROR_MORE_DATA) quando pbKnowledge é muito pequeno. Nesse caso, o número necessário de bytes é retornado em pcbKnowledge.

Comentários

O objeto Interface IReplicaKeyMap correto é necessário para desserializar um objeto de conhecimento usando IProviderSyncServices::DeserializeSyncKnowledge. Quando FALSE é especificado para fSerializeReplicaKeyMap, o objeto IReplicaKeyMap é serializado com os dados de conhecimento. Quando esse sinalizador não é especificado, os dados de IReplicaKeyMap devem ser armazenados de algum outro modo para que o objeto de conhecimento possa ser desserializado.

Formato de serialização

O conhecimento serializado contido em pbKnowledge é armazenado de forma compacta, sem preenchimento, em ordem de byte big endian. O conhecimento serializado contém os elementos abaixo, na ordem a seguir.

  1. Uma seção de cabeçalho. A seção de cabeçalho contém os elementos a seguir:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A versão principal do formato de serialização. Esse valor é sempre 3.

    ULONG

    4

    A versão secundária do formato de serialização. Esse valor é sempre 0.

  2. Uma seção de mapa de chave da réplica quando fSerializeReplicaKeyMap é TRUE. Caso contrário, não há uma seção de mapa de chave da réplica. O formato da seção de mapa de chave da réplica é definido em IReplicaKeyMap::Serialize.

  3. Uma seção do esquema de formato de ID. A seção do esquema de formato de ID contém os elementos a seguir:

    Tipo de dados Comprimento em bytes Descrição

    BOOL

    1

    Indica se as IDs de item contidas no conhecimento têm comprimento fixo ou variável. Esse valor será 0 se as IDs tiverem comprimento fixo; ou 1 se tiverem comprimento variável.

    USHORT

    2

    O comprimento, em bytes, das IDs de item de comprimento fixo, ou o comprimento máximo das IDs de comprimento variável.

    BOOL

    1

    Indica se as IDs de unidade de alteração contidas no conhecimento têm comprimento fixo ou variável. Esse valor será 0 se as IDs tiverem comprimento fixo; ou 1 se tiverem comprimento variável.

    USHORT

    2

    O comprimento, em bytes, das IDs de unidade de alteração de comprimento fixo, ou o comprimento máximo das IDs de comprimento variável.

  4. Uma seção do vetor de relógio do escopo. A seção do vetor de relógio do escopo contém os elementos a seguir:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A assinatura do vetor de relógio. Esse valor é 1 quando o vetor de relógio não contém itens de feed do FeedSync; caso contrário, o valor é 9 quando o vetor de relógio contém itens de feed do FeedSync.

    ULONG

    4

    O número de elementos de vetor de relógio contidos neste vetor de relógio.

    Quando o vetor de relógio contém itens de feed do FeedSync, a seção a seguir está presente no conhecimento serializado. Caso contrário, ela não existe:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    O número de atualizações feitas no feed do FeedSync associado a este conhecimento. Esse valor corresponde ao atributo updates do feed do FeedSync.

    BYTE

    1

    Indica se o feed do FeedSync controla conflitos. Esse valor corresponde ao atributo noconflicts do feed do FeedSync. Esse valor é 0 quando noconflicts não está definido; caso contrário, o valor é 1.

    O restante da seção de vetor de relógio contém uma lista dos elementos de vetor de relógio, com o número de elementos igual ao valor previamente especificado na seção de vetor de relógio.

    Cada elemento de vetor de relógio contém os elementos a seguir:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A chave de uma réplica.

    ULONGLONG

    8

    Uma contagem em escala.

    Quando o conhecimento é associado a um feed do FeedSync, cada elemento de vetor de relógio contém os seguintes elementos adicionais:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A parte da data do valor when do feed do FeedSync.

    ULONG

    4

    A parte da hora do valor when do feed do FeedSync.

    BYTE

    1

    Os sinalizadores associados ao feed do FeedSync.

  5. Uma seção de exceções do intervalo. A seção de exceções do intervalo contém os elementos a seguir:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A assinatura da seção de exceções do intervalo. Esse valor é sempre 3.

    ULONG

    4

    O número de exceções do intervalo contidas no conhecimento.

    A seção de exceções do intervalo contém uma lista de exceções do intervalo, com o número de exceções do intervalo igual ao valor especificado no ULONG anterior.

    Cada exceção do intervalo contém os elementos a seguir:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A assinatura da exceção do intervalo. Este valor é sempre 2.

    Quando as IDs de item têm comprimento fixo:

    Tipo de dados Comprimento em bytes Descrição

    Sequência de bytes

    O comprimento especificado no formato de ID de item.

    A ID de item de comprimento fixo da ID de item do limite inferior do intervalo.

    Sequência de bytes

    O comprimento especificado no formato de ID de item.

    A ID de item de comprimento fixo da ID de item do limite superior do intervalo.

    Ou, quando as IDs de item tiverem comprimento variável:

    Tipo de dados Comprimento em bytes Descrição

    USHORT

    2

    O comprimento, em bytes, da ID de comprimento variável. Esse comprimento inclui os dois bytes para o USHORT que contém o comprimento, mais os bytes que contêm a ID real.

    Sequência de bytes

    O comprimento especificado no USHORT anterior.

    A ID de item de comprimento variável da ID de item do limite inferior do intervalo.

    USHORT

    2

    O comprimento, em bytes, da ID de comprimento variável. Esse comprimento inclui os dois bytes para o USHORT que contém o comprimento, mais os bytes que contêm a ID real.

    Sequência de bytes

    O comprimento especificado no USHORT anterior.

    A ID de item de comprimento variável da ID de item do limite superior do intervalo.

    O vetor de relógio associado à exceção do intervalo:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A assinatura do vetor de relógio. Esse valor é 1 quando o vetor de relógio não contém itens de feed do FeedSync; caso contrário, o valor é 9 quando o vetor de relógio contém itens de feed do FeedSync.

    ULONG

    4

    O número de elementos de vetor de relógio contidos neste vetor de relógio.

    Quando o vetor de relógio contém itens de feed do FeedSync, a seção a seguir está presente no conhecimento serializado. Caso contrário, ela não existe:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    O número de atualizações feitas no feed do FeedSync associado a este conhecimento. Esse valor corresponde ao atributo updates do feed do FeedSync.

    BYTE

    1

    Indica se o feed do FeedSync controla conflitos. Esse valor corresponde ao atributo noconflicts do feed do FeedSync. Esse valor é 0 quando noconflicts não está definido; caso contrário, o valor é 1.

    O restante do vetor de relógio contém uma lista dos elementos de vetor de relógio, com o número de elementos igual ao valor previamente especificado na seção de vetor de relógio.

    Cada elemento de vetor de relógio contém os elementos a seguir:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A chave de uma réplica.

    ULONGLONG

    8

    Uma contagem em escala.

    Quando o conhecimento é associado a um feed do FeedSync, cada elemento de vetor de relógio contém os seguintes elementos adicionais:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A parte da data do valor when do feed do FeedSync.

    ULONG

    4

    A parte da hora do valor when do feed do FeedSync.

    BYTE

    1

    Os sinalizadores associados ao feed do FeedSync.

  6. Uma seção de exceções de item único. A seção de exceções de item único contém os elementos a seguir:

    Tipo de dados Comprimento em bytes Descrição

    ULONG

    4

    A assinatura da seção de exceções de item único. Esse valor é sempre 6.

    ULONG

    4

    A assinatura da tabela do vetor de relógio. Esse valor é sempre 4.

    ULONG

    4

    O número de vetores de relógio contidos na tabela de vetores de relógio.

    1. Uma tabela de vetores de relógio. A tabela de vetores de relógio contém uma lista de vetores de relógio, com o número de vetores de relógio igual ao valor especificado no ULONG anterior. Cada vetor de relógio contém os elementos a seguir:

      Tipo de dados Comprimento em bytes Descrição

      ULONG

      4

      A assinatura do vetor de relógio. Esse valor é 1 quando o vetor de relógio não contém itens de feed do FeedSync; caso contrário, o valor é 9 quando o vetor de relógio contém itens de feed do FeedSync.

      ULONG

      4

      O número de elementos de vetor de relógio contidos neste vetor de relógio.

      Quando o vetor de relógio contém itens de feed do FeedSync, a seção a seguir está presente no conhecimento serializado. Caso contrário, ela não existe:

      Tipo de dados Comprimento em bytes Descrição

      ULONG

      4

      O número de atualizações feitas no feed do FeedSync associado a este conhecimento. Esse valor corresponde ao atributo updates do feed do FeedSync.

      BYTE

      1

      Indica se o feed do FeedSync controla conflitos. Esse valor corresponde ao atributo noconflicts do feed do FeedSync. Esse valor é 0 quando noconflicts não está definido; caso contrário, o valor é 1.

      O restante do vetor de relógio contém uma lista dos elementos de vetor de relógio, com o número de elementos igual ao valor previamente especificado na seção de vetor de relógio.

      Cada elemento de vetor de relógio contém os elementos a seguir:

      Tipo de dados Comprimento em bytes Descrição

      ULONG

      4

      A chave de uma réplica.

      ULONGLONG

      8

      Uma contagem em escala.

      Quando o conhecimento é associado a um feed do FeedSync, cada elemento de vetor de relógio contém os seguintes elementos adicionais:

      Tipo de dados Comprimento em bytes Descrição

      ULONG

      4

      A parte da data do valor when do feed do FeedSync.

      ULONG

      4

      A parte da hora do valor when do feed do FeedSync.

      BYTE

      1

      Os sinalizadores associados ao feed do FeedSync.

    2. Uma tabela de exceções de item único. A tabela de exceções de item único contém os elementos a seguir:

      Tipo de dados Comprimento em bytes Descrição

      ULONG

      4

      O número de exceções de item único contidas na tabela de exceções de item único.

      Cada exceção de item único na tabela contém os elementos a seguir.

      Quando as IDs de item têm comprimento fixo:

      Tipo de dados Comprimento em bytes Descrição

      Sequência de bytes

      O comprimento especificado no formato de ID de item.

      A ID de item de comprimento fixo associada à exceção de item único.

      Ou, quando as IDs de item tiverem comprimento variável:

      Tipo de dados Comprimento em bytes Descrição

      USHORT

      2

      O comprimento, em bytes, da ID de comprimento variável. Esse comprimento inclui os dois bytes para o USHORT que contém o comprimento, mais os bytes que contêm a ID real.

      Sequência de bytes

      O comprimento especificado no USHORT anterior.

      A ID de item de comprimento variável associada à exceção de item único.

      Cada exceção de item único contém os elementos adicionais a seguir:

      Tipo de dados Comprimento em bytes Descrição

      ULONG

      4

      Quando a exceção de item único faz referência a um item, esse valor é um índice para a tabela de vetores de relógio que está contida nesses dados serializados. Quando a exceção de item único faz referência a uma ou mais exceções da unidade de alteração, esse valor é 0xFFFFFFFF.

      ULONG

      4

      O número de exceções da unidade de alteração contidas na exceção. Esse valor pode ser 0.

      Quando existem exceções da unidade de alteração, uma lista de exceções da unidade de alteração ocorre em seguida. A lista contém o número de exceções da unidade de alteração especificadas no ULONG anterior.

      Cada exceção da unidade de alteração contém os elementos a seguir.

      Quando as IDs de unidade de alteração têm comprimento fixo:

      Tipo de dados Comprimento em bytes Descrição

      Sequência de bytes

      O comprimento especificado no formato da ID de unidade de alteração.

      A ID da unidade de alteração de comprimento fixo associada à exceção da unidade de alteração.

      Ou, quando as IDs de unidade de alteração tiverem comprimento variável:

      Tipo de dados Comprimento em bytes Descrição

      USHORT

      2

      O comprimento, em bytes, da ID de comprimento variável. Esse comprimento inclui os dois bytes para o USHORT que contém o comprimento, mais os bytes que contêm a ID real.

      Sequência de bytes

      O comprimento especificado no USHORT anterior.

      A ID da unidade de alteração de comprimento variável associada à exceção da unidade de alteração.

      Cada exceção da unidade de alteração contém o elemento adicional a seguir:

      Tipo de dados Comprimento em bytes Descrição

      ULONG

      4

      Um índice na tabela de vetores de relógio contido nesses dados serializados.

Consulte também

Referência

Interface ISyncKnowledge