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, сохраняются в компактном виде, без заполнения и с обратным порядком байтов. Сериализованные сведения о фильтре содержат следующие элементы в приведенном порядке.
Один раздел заголовка. Раздел заголовка содержит следующие элементы.
Тип данных
Длина в байтах
Описание
ULONGLONG
8
Версия формата сериализации для сведений о фильтре. Это значение равно 2, если фильтр является фильтром элементов или фильтром базовых единиц. Это значение равно 3, если фильтр является пользовательским или комбинированным фильтром.
ULONG
4
Флаги, сопоставленные со сведениями о фильтре. Содержит значения из набора флагов SYNC_FILTER_INFO_FLAG.
Если этот флаг включает значения 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.
Идентификатор переменной длины для базовой единицы.
Если флаг включает значение SYNC_FILTER_INFO_FLAG_CUSTOM, то следующие данные фильтра сериализуются.
Тип данных
Длина в байтах
Описание
Последовательность байтов
Определяется пользовательским фильтром.
Сериализованные данные фильтра, которые были записаны в поток методом ISyncFilter::Serialize.
Если флаг включает значение SYNC_FILTER_INFO_COMBINED, то следующие данные фильтра сериализуются.
Тип данных
Длина в байтах
Описание
ULONG
4
Длина (в байтах) первого объекта данных фильтра в сочетании.
Последовательность байтов
Длина, заданная в предыдущем ULONG.
Сериализованные данные первого фильтра в формате, определенном в этом документе.
ULONG
4
Длина (в байтах) второго объекта данных фильтра в сочетании.
Последовательность байтов
Длина, заданная в предыдущем ULONG.
Сериализованные данные второго фильтра в формате, определенном в этом документе.