Поделиться через


ISyncKnowledge::Serialize

Сериализует данные объекта набора знаний в массив байтов.

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

Параметры

  • fSerializeReplicaKeyMap
    [in] Значение TRUE для сериализации объекта IReplicaKeyMap, содержащегося в наборе знаний, в противном случае значение FALSE.
  • pbKnowledge
    [in, out, unique, size_is(*pcbKnowledge)] Массив байтов, получающий сериализованные данные набора знаний.
  • pcbKnowledge
    [in, out] Указывает число байтов в объекте pbKnowledge. Возвращает число байтов, необходимое для сериализации данных карты ключей реплики, если размер pbKnowledge слишком мал, либо возвращает число записанных байтов.

Возвращаемое значение

  • S_OK.

  • E_POINTER.

  • E_INVALIDARG.

  • E_OUTOFMEMORY.

  • HRESULT_FROM_WIN32(ERROR_MORE_DATA), если размер pbKnowledge слишком мал. В этом случае необходимое число байтов возвращается в pcbKnowledge.

Замечания

Для десериализации объекта набора знаний с помощью метода IProviderSyncServices::DeserializeSyncKnowledge требуется подходящий интерфейс Интерфейс IReplicaKeyMap. Если в параметре fSerializeReplicaKeyMap задается значение FALSE, то объект IReplicaKeyMap сериализуется вместе с данными набора знаний. Если этот флаг не указан, данные IReplicaKeyMap необходимо хранить другим способом, чтобы получить возможность десериализовать объект набора знаний.

Формат сериализации

Сериализованный набор знаний, содержащийся в pbKnowledge, хранится в компактном виде, без заполнения и с обратным порядком байтов. Сериализованный набор знаний содержит элементы в следующем порядке.

  1. Один раздел заголовка. Раздел заголовка содержит следующие элементы:

    Тип данных Длина в байтах Описание

    ULONG

    4

    Основная версия формата сериализации. Это значение всегда равно 3.

    ULONG

    4

    Вспомогательная версия формата сериализации. Это значение всегда равно 0.

  2. Один раздел со схемой ключей реплики, если fSerializeReplicaKeyMap имеет значение TRUE. В противном случае раздел со схемой ключей реплики отсутствует. Формат раздела со схемой ключей реплики определяется в методе IReplicaKeyMap::Serialize.

  3. Один раздел со схемой форматов идентификаторов. Раздел со схемой форматов идентификаторов содержит следующие элементы:

    Тип данных Длина в байтах Описание

    BOOL

    1

    Показывает, какую длину имеют идентификаторы элементов, содержащиеся в наборе знаний, — фиксированную или переменную. Это значение равно 0, если идентификаторы имеют фиксированную длину, и 1, если идентификаторы имеют переменную длину.

    USHORT

    2

    Длина (в байтах) идентификатора элемента для идентификаторов фиксированной длины или максимальная длина для идентификаторов переменной длины.

    BOOL

    1

    Показывает, какую длину имеют идентификаторы базовых единиц, содержащиеся в наборе знаний, — фиксированную или переменную. Это значение равно 0, если идентификаторы имеют фиксированную длину, и 1, если идентификаторы имеют переменную длину.

    USHORT

    2

    Длина (в байтах) идентификатора базовой единицы для идентификаторов фиксированной длины или максимальная длина для идентификаторов переменной длины.

  4. Один раздел вектора синхронизации области. Раздел вектора синхронизации области содержит следующие элементы.

    Тип данных Длина в байтах Описание

    ULONG

    4

    Подпись вектора синхронизации. Это значение равно 9, если вектор синхронизации содержит элементы канала FeedSync, и равно 1 в противном случае.

    ULONG

    4

    Число элементов, содержащихся в этом векторе синхронизации.

    Если вектор синхронизации содержит элементы канала FeedSync, то в сериализованных данных набора знаний существует следующий раздел. В противном случае он не существует.

    Тип данных Длина в байтах Описание

    ULONG

    4

    Число обновлений, внесенных в канал FeedSync, сопоставленный с этим набором знаний. Это значение соответствует атрибуту updates канала FeedSync.

    BYTE

    1

    Указывает, выполняет ли канал FeedSync отслеживание конфликтов. Это значение соответствует атрибуту noconflicts канала FeedSync. Это значение равно 1, если задан параметр noconflicts, и равно 0 в противном случае.

    В остальной части раздела вектора синхронизации содержится список элементов вектора синхронизации, где количество элементов равно значению, ранее указанному в разделе вектора синхронизации.

    Каждый элемент вектора синхронизации содержит следующие элементы:

    Тип данных Длина в байтах Описание

    ULONG

    4

    Ключ реплики.

    ULONGLONG

    8

    Счетчик тактов.

    Если набор знаний сопоставлен с каналом FeedSync, то каждый элемент вектора синхронизации содержит следующие дополнительные элементы:

    Тип данных Длина в байтах Описание

    ULONG

    4

    Часть значения when канала FeedSync, содержащая дату.

    ULONG

    4

    Часть значения when канала FeedSync, содержащая время.

    BYTE

    1

    Флаги, сопоставленные с каналом FeedSync.

  5. Один раздел исключений диапазона. Раздел исключений диапазона содержит следующие элементы.

    Тип данных Длина в байтах Описание

    ULONG

    4

    Подпись раздела исключений диапазона. Это значение всегда равно 3.

    ULONG

    4

    Количество исключений диапазона, содержащихся в этом наборе знаний.

    Раздел исключений диапазона содержит список исключений диапазонов с числом исключений диапазонов, который равен значению, указанному в предыдущем параметре ULONG.

    Каждое исключение диапазона содержит следующие элементы.

    Тип данных Длина в байтах Описание

    ULONG

    4

    Подпись исключения диапазона. Это значение всегда равно 2.

    Если идентификаторы элементов имеют фиксированную длину.

    Тип данных Длина в байтах Описание

    Последовательность байтов

    Длина, указанная в формате идентификаторов элементов.

    Идентификатор элемента с фиксированной длиной, соответствующей нижней границе идентификаторов элемента для данного диапазона.

    Последовательность байтов

    Длина, указанная в формате идентификаторов элементов.

    Идентификатор элемента с фиксированной длиной, соответствующей верхней границе идентификаторов элемента для данного диапазона.

    Или если идентификаторы элементов имеют переменную длину.

    Тип данных Длина в байтах Описание

    USHORT

    2

    Длина (в байтах) идентификатора переменной длины. В это значение входят два байта для параметра USHORT, содержащего длину, и байты, содержащие собственно идентификатор.

    Последовательность байтов

    Длина, указанная в предыдущем параметре USHORT.

    Идентификатор элемента с переменной длиной, соответствующей нижней границе идентификаторов элемента для данного диапазона.

    USHORT

    2

    Длина (в байтах) идентификатора переменной длины. В это значение входят два байта для параметра USHORT, содержащего длину, и байты, содержащие собственно идентификатор.

    Последовательность байтов

    Длина, указанная в предыдущем параметре USHORT.

    Идентификатор элемента с переменной длиной, соответствующей верхней границе идентификаторов элемента для данного диапазона.

    Возвращает вектор синхронизации, связанный с исключением диапазона.

    Тип данных Длина в байтах Описание

    ULONG

    4

    Подпись вектора синхронизации. Это значение равно 9, если вектор синхронизации содержит элементы канала FeedSync, и равно 1 в противном случае.

    ULONG

    4

    Число элементов, содержащихся в этом векторе синхронизации.

    Если вектор синхронизации содержит элементы канала FeedSync, то в сериализованных данных набора знаний существует следующий раздел. В противном случае он не существует.

    Тип данных Длина в байтах Описание

    ULONG

    4

    Число обновлений, внесенных в канал FeedSync, сопоставленный с этим набором знаний. Это значение соответствует атрибуту updates канала FeedSync.

    BYTE

    1

    Указывает, выполняет ли канал FeedSync отслеживание конфликтов. Это значение соответствует атрибуту noconflicts канала FeedSync. Это значение равно 1, если задан параметр noconflicts, и равно 0 в противном случае.

    В остальной части вектора синхронизации содержится список элементов вектора синхронизации, где число элементов равно значению, ранее указанному в разделе вектора синхронизации.

    Каждый элемент вектора синхронизации содержит следующие элементы:

    Тип данных Длина в байтах Описание

    ULONG

    4

    Ключ реплики.

    ULONGLONG

    8

    Счетчик тактов.

    Если набор знаний сопоставлен с каналом FeedSync, то каждый элемент вектора синхронизации содержит следующие дополнительные элементы:

    Тип данных Длина в байтах Описание

    ULONG

    4

    Часть значения when канала FeedSync, содержащая дату.

    ULONG

    4

    Часть значения when канала FeedSync, содержащая время.

    BYTE

    1

    Флаги, сопоставленные с каналом FeedSync.

  6. Один раздел исключений одного элемента. Раздел исключений одного элемента содержит следующие элементы.

    Тип данных Длина в байтах Описание

    ULONG

    4

    Подпись раздела исключений одного элемента. Это значение всегда равно 6.

    ULONG

    4

    Подпись таблицы вектора синхронизации. Это значение всегда равно 4.

    ULONG

    4

    Число векторов синхронизации, содержащихся в таблице векторов синхронизации.

    1. Таблица вектора синхронизации. Таблица векторов синхронизации содержит список векторов синхронизации. Количество векторов равно значению, указанному в предыдущем параметре ULONG. Каждый вектор синхронизации содержит следующие элементы:

      Тип данных Длина в байтах Описание

      ULONG

      4

      Подпись вектора синхронизации. Это значение равно 9, если вектор синхронизации содержит элементы канала FeedSync, и равно 1 в противном случае.

      ULONG

      4

      Число элементов, содержащихся в этом векторе синхронизации.

      Если вектор синхронизации содержит элементы канала FeedSync, то в сериализованных данных набора знаний существует следующий раздел. В противном случае он не существует.

      Тип данных Длина в байтах Описание

      ULONG

      4

      Число обновлений, внесенных в канал FeedSync, сопоставленный с этим набором знаний. Это значение соответствует атрибуту updates канала FeedSync.

      BYTE

      1

      Указывает, выполняет ли канал FeedSync отслеживание конфликтов. Это значение соответствует атрибуту noconflicts канала FeedSync. Это значение равно 1, если задан параметр noconflicts, и равно 0 в противном случае.

      В остальной части вектора синхронизации содержится список элементов вектора синхронизации, где число элементов равно значению, ранее указанному в разделе вектора синхронизации.

      Каждый элемент вектора синхронизации содержит следующие элементы:

      Тип данных Длина в байтах Описание

      ULONG

      4

      Ключ реплики.

      ULONGLONG

      8

      Счетчик тактов.

      Если набор знаний сопоставлен с каналом FeedSync, то каждый элемент вектора синхронизации содержит следующие дополнительные элементы:

      Тип данных Длина в байтах Описание

      ULONG

      4

      Часть значения when канала FeedSync, содержащая дату.

      ULONG

      4

      Часть значения when канала FeedSync, содержащая время.

      BYTE

      1

      Флаги, сопоставленные с каналом FeedSync.

    2. Таблица исключений одного элемента. Таблица исключений одного элемента содержит следующие элементы.

      Тип данных Длина в байтах Описание

      ULONG

      4

      Количество исключений одного элемента, которые содержатся в таблице исключений одного элемента.

      Каждое исключение одного элемента в таблице содержит следующие элементы.

      Если идентификаторы элементов имеют фиксированную длину.

      Тип данных Длина в байтах Описание

      Последовательность байтов

      Длина, указанная в формате идентификаторов элементов.

      Идентификатор элемента с фиксированной длиной, связанный с исключением одного элемента.

      Или если идентификаторы элементов имеют переменную длину.

      Тип данных Длина в байтах Описание

      USHORT

      2

      Длина (в байтах) идентификатора переменной длины. В это значение входят два байта для параметра USHORT, содержащего длину, и байты, содержащие собственно идентификатор.

      Последовательность байтов

      Длина, указанная в предыдущем параметре USHORT.

      Идентификатор элемента с переменной длиной, связанный с исключением одного элемента.

      Каждое исключение одного элемента содержит следующие дополнительные элементы:

      Тип данных Длина в байтах Описание

      ULONG

      4

      Если исключение одного элемента указывает на элемент, это значение является индексом таблицы вектора синхронизации, которая содержится в этих сериализированных данных. Если исключение одного элемента указывает на одно или несколько исключений базовой единицы, то это значение равно 0xFFFFFFFF.

      ULONG

      4

      Количество исключений базовой единицы, которые содержатся в исключении. Значение может равняться 0.

      Далее указывается список исключений базовых единиц, если таковые обнаружены. В списке указывается количество исключений базовых единиц, указанных в предыдущем параметре ULONG.

      Каждое исключение базовой единицы содержит следующие элементы.

      Если идентификаторы базовых единиц имеют фиксированную длину.

      Тип данных Длина в байтах Описание

      Последовательность байтов

      Длина, указанная в формате идентификаторов базовых единиц.

      Идентификатор базовой единицы с фиксированной длиной, который связан с исключением базовой единицы.

      Если идентификаторы базовых единиц имеют переменную длину.

      Тип данных Длина в байтах Описание

      USHORT

      2

      Длина (в байтах) идентификатора переменной длины. В это значение входят два байта для параметра USHORT, содержащего длину, и байты, содержащие собственно идентификатор.

      Последовательность байтов

      Длина, указанная в предыдущем параметре USHORT.

      Идентификатор базовой единицы с переменной длиной, связанный с исключением базовой единицы.

      Каждое исключение базовой единицы содержит следующий дополнительный элемент.

      Тип данных Длина в байтах Описание

      ULONG

      4

      Индекс для таблицы векторов синхронизации, которая содержится в этих сериализованных данных.

См. также

Справочник

Интерфейс ISyncKnowledge