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


ISyncFilterInfo::Serialize

Выполняет сериализацию данных фильтра в массив байтов.

Синтаксис

HRESULT Serialize( 
  BYTE *pbBuffer,
  DWORD *pcbBuffer);

Параметры

  • pbBuffer
    [in, out, size_is(*pcbBuffer)] Возвращает сериализованные сведения о фильтре. Для запроса необходимого размера буфера это значение должно быть равным NULL.

  • pcbBuffer
    [in, out] Указывает число байтов в объекте pbBuffer. Возвращает число байтов, необходимое для сериализации фильтра, если размер pcbBuffer слишком мал, в противном случае возвращает число записанных байтов.

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

  • S_OK.

  • E_INVALIDARG.

  • HRESULT_FROM_WIN32(ERROR_MORE_DATA), если pbBuffer имеет значение NULL или размер pcbBuffer слишком мал. В этом случае число байтов, необходимое для сериализации фильтра, возвращается в pcbBuffer.

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

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

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

    Тип данных

    Длина в байтах

    Описание

    ULONGLONG

    8

    Версия формата сериализации для сведений о фильтре. Это значение равно 2, если фильтр является фильтром элементов или фильтром базовых единиц. Это значение равно 3, если фильтр является пользовательским или комбинированным фильтром.

    ULONG

    4

    Флаги, сопоставленные со сведениями о фильтре. Содержит значения из набора флагов SYNC_FILTER_INFO_FLAG.

  2. Если этот флаг включает значения SYNC_FILTER_INFO_FLAG_ITEM_LIST или SYNC_FILTER_INFO_FLAG_CHANGE_UNIT_LIST, то следующие данные фильтра сериализуются.

    Тип данных

    Длина в байтах

    Описание

    BOOL

    1

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

    USHORT

    2

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

    ULONG

    4

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

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

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

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

    Тип данных

    Длина в байтах

    Описание

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

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

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

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

    Тип данных

    Длина в байтах

    Описание

    USHORT

    2

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

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

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

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

  3. Если флаг включает значение SYNC_FILTER_INFO_FLAG_CUSTOM, то следующие данные фильтра сериализуются.

    Тип данных

    Длина в байтах

    Описание

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

    Определяется пользовательским фильтром.

    Сериализованные данные фильтра, которые были записаны в поток методом ISyncFilter::Serialize.

  4. Если флаг включает значение SYNC_FILTER_INFO_COMBINED, то следующие данные фильтра сериализуются.

    Тип данных

    Длина в байтах

    Описание

    ULONG

    4

    Длина (в байтах) первого объекта данных фильтра в сочетании.

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

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

    Сериализованные данные первого фильтра в формате, определенном в этом документе.

    ULONG

    4

    Длина (в байтах) второго объекта данных фильтра в сочетании.

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

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

    Сериализованные данные второго фильтра в формате, определенном в этом документе.

См. также

Другие ресурсы

Интерфейс ISyncFilterInfo