ISyncMetadataStoreSerializer::SerializeReplicaMetadata
Для указанной реплики выполняет сериализацию содержимого хранилища службы хранилища метаданных в поток назначения в каноническом формате.
HRESULT SerializeReplicaMetadata(
const BYTE * pbReplicaId,
const ID_PARAMETERS * pIdParameters,
IStream * pStream,
SYNC_SERIALIZATION_VERSION serializationVersion);
Параметры
Параметр |
Описание |
pbReplicaId |
[in] Идентификатор реплики, для которой требуется сериализация метаданных. Если для идентификатора реплики была задана постоянная длина в параметре pIdParameters, необходимо указать только значение идентификатора для pbReplicaId, а размер буфера указывать не нужно. Однако если идентификатор реплики имеет переменную длину, в первых двух байтах буфера должна указываться длина переданного буфера. Например, если длина идентификатора реплики составляет в данном случае 16 байт, то значение первых двух байтов в буфере должно быть 18. |
pIdParameters |
[in] Структура Структура ID_PARAMETERS, указывающая параметры форматирования, в том числе формат идентификаторов реплики, для поставщика, метаданные которого сериализуются. |
pStream |
[in] Поток назначения, в который выполняется сериализация метаданных. Этот метод производит однонаправленную запись данных в поток, начиная с текущей позиции. Вызывающий объект должен расположить поток в начале усеченного файла или в другой подходящей начальной позиции. |
serializationVersion |
[in] Значение SYNC_SERIALIZATION_VERSION Enumeration, которое определяет версию Sync Framework, для которой верны сериализованные метаданные. Например, если собственным форматом сериализации для набора знаний является Sync Framework 2.0, а в этом параметре указано значение Sync Framework 1.0, то сериализация значений этого знания будет производиться в формате 1.0. Если в значениях набора знаний используются какие-либо функции версии 2.0, которые не могут быть сериализованы в формате версии 1.0, то сериализация завершится ошибкой с кодом SYNC_E_INCOMPATIBLE_SERIALIZATION_VERSION. |
Возвращаемое значение
S_OK.
E_POINTER.
E_OUTOFMEMORY.
E_INVALIDARG, если идентификатор указанной реплики не существует в связанном хранилище метаданных или если указанный ID_PARAMETERS не совпадает с форматами, используемыми для реплики.
SYNC_E_INVALIDOPERATION, если метод вызван без открытого хранилища метаданных.
SYNC_E_METADATA_ACTIVE_TRANSACTION_REQUIRED, если недоступна транзакция, в рамках которой можно выполнить сериализацию метаданных.
Замечания
Вызов этого метода возможен при соблюдении двух условий.
Хранилище метаданных должно быть открыто. Открыть хранилище можно вызовом метода ISqlSyncMetadataStore::OpenStore или ISqlSyncMetadataStore::CreateStore.
Для объекта ISqlSyncMetadataStore должна быть доступна активная транзакция. Начать транзакцию можно вызовом метода ISyncMetadataStore::BeginTransaction.
В результате вызова этого метода, если не выполняется какое-либо из этих условий, возвращается значение, сигнализирующее об ошибке.