다음을 통해 공유


ISyncKnowledge2::SerializeWithOptions

지정된 버전 및 직렬화 옵션에 따라 정보 개체 데이터를 바이트 배열로 직렬화합니다.

HRESULT SerializeWithOptions(
  SYNC_SERIALIZATION_VERSION targetFormatVersion,
  DWORD dwFlags,
  BYTE* pBuffer,
  DWORD* pdwSerializedSize);

매개 변수

항목

정의

targetFormatVersion

[in] 직렬화된 정보가 이 버전과 호환됩니다.

dwFlags

[in] 개체를 직렬화하는 방법에 대한 추가 정보를 지정하는 옵션입니다. 0이거나 SYNC_SERIALIZE 플래그로 지정된 값의 조합이어야 합니다. 0이 지정되면 복제본 키 맵이 직렬화된 정보 데이터의 일부로 포함되지 않습니다.

pBuffer

[in, out, unique, size_is(*pdwSerializedSize)] 직렬화된 정보 개체 데이터가 이 버퍼에 직렬화됩니다.

pdwSerializedSize

[in, out] pBuffer의 바이트 수를 지정합니다. pBuffer가 너무 작으면 정보 데이터를 직렬화하는 데 필요한 바이트 수를 반환하고, 그렇지 않으면 쓴 바이트 수를 반환합니다.

반환 값

  • S_OK

  • E_POINTER

  • pBuffer가 너무 작으면 HRESULT_FROM_WIN32(ERROR_MORE_DATA)입니다. 이 경우에는 필요한 바이트 수가 pdwSerializedSize에 반환됩니다.

  • targetFormatVersion의 값이 개체의 버전보다 높거나, 개체에 포함된 요소가 targetFormatVersion과 호환되지 않으면 SYNC_E_INVALID_VERSION입니다.

주의

targetFormatVersion 값은 직렬화된 정보 데이터의 형식을 결정합니다. SYNC_SERIALIZATION_VERSION_V1이 지정되면 직렬화된 형식은 Sync Framework 1.0 이상 버전의 구성 요소와 호환되고, SYNC_SERIALIZATION_VERSION_V2가 지정되면 직렬화된 형식은 Sync Framework 2.0 구성 요소와 호환됩니다. 정보 개체에 포함된 요소가 Sync Framework 1.0과 호환되지 않는 경우 SYNC_SERIALIZATION_VERSION_V2가 지정되면 SYNC_E_INVALID_VERSION이 반환됩니다. 예를 들어 ISyncKnowledge2::ProjectOntoColumnSet에서 반환하는 정보는 Sync Framework 2.0에 도입된 요소를 포함하므로 targetFormatVersion에 지정된 SYNC_SERIALIZATION_VERSION_V1을 사용하여 직렬화될 수 없습니다.

참고

Sync Framework 1.0 형식으로 직렬화하면 Sync Framework 2.0 형식으로 직렬화하는 것보다 효율성이 떨어집니다. 따라서 특별히 Sync Framework 1.0 형식이 필요한 경우가 아니면 Sync Framework 2.0 형식을 사용해야 합니다.

IProviderSyncServices::DeserializeSyncKnowledge를 사용하여 정보 개체를 역직렬화하려면 적절한 IReplicaKeyMap 인터페이스 개체가 필요합니다. flags에 SYNC_SERIALIZE_REPLICA_KEY_MAP이 지정되면 IReplicaKeyMap 개체가 정보 데이터와 함께 직렬화됩니다. 이 플래그가 지정되지 않은 경우에는 정보 개체를 역직렬화할 수 있도록 다른 방식으로 IReplicaKeyMap 데이터를 저장해야 합니다.

직렬화 형식

pBuffer에 포함되는 직렬화된 정보는 big-endian 바이트 순서에 따라 패딩 없이 축약 형식으로 저장됩니다.

targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V1이면 ISyncKnowledge::Serialize에서 설명한 형식에 따라 정보가 직렬화되고, 그렇지 않으면 직렬화된 정보에 다음과 같은 요소가 순서대로 포함됩니다.

  1. 헤더 섹션 1. 헤더 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    직렬화 형식의 버전입니다. targetFormatVersion에 포함된 값이며 SYNC_SERIALIZATION_VERSION 열거형의 유효한 값이어야 합니다.

    ULONG

    4

    예약되어 있습니다. 이 값은 항상 0입니다.

    ULONG

    4

    직렬화된 정보의 최소 지원 버전입니다.

    ULONG

    4

    예약되어 있습니다. 이 값은 항상 0입니다.

  2. dwFlags에 SYNC_SERIALIZE_REPLICA_KEY_MAP이 포함되어 있으면 복제본 키 맵 섹션 1. 그렇지 않으면 복제본 키 맵 섹션이 없습니다. 복제본 키 맵 섹션의 형식은 IReplicaKeyMap::Serialize에서 정의됩니다.

  3. 다음 섹션 집합을 나타내는 서명입니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    섹션 서명. 이 값은 항상 24입니다.

  4. ID 형식 스키마 섹션 1. ID 형식 스키마 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    BOOL

    1

    정보에 포함되는 복제본 ID가 고정 길이인지 아니면 가변 길이인지를 나타냅니다. 이 값은 ID가 고정 길이이면 0이고 가변 길이이면 1입니다.

    USHORT

    2

    고정 길이 ID의 복제본 ID 길이(바이트) 또는 가변 길이 ID의 최대 ID 길이입니다.

    BOOL

    1

    정보에 포함되는 항목 ID가 고정 길이인지 아니면 가변 길이인지를 나타냅니다. 이 값은 ID가 고정 길이이면 0이고 가변 길이이면 1입니다.

    USHORT

    2

    고정 길이 ID의 항목 ID 길이(바이트) 또는 가변 길이 ID의 최대 ID 길이입니다.

    BOOL

    1

    정보에 포함되는 변경 단위 ID가 고정 길이인지 아니면 가변 길이인지를 나타냅니다. 이 값은 ID가 고정 길이이면 0이고 가변 길이이면 1입니다.

    USHORT

    2

    고정 길이 ID의 변경 단위 ID 길이(바이트) 또는 가변 길이 ID의 최대 ID 길이입니다.

  5. 클록 벡터 테이블 섹션 1. 클록 벡터 테이블 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    클록 벡터 테이블 서명입니다. 이 값은 항상 21입니다.

    ULONG

    4

    클록 벡터 테이블에 포함되는 클록 벡터의 수입니다.

  6. 클록 벡터 테이블에는 이전 ULONG에 지정된 값과 같은 수의 클록 벡터 목록이 포함됩니다. 각 클록 벡터에는 다음 요소가 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    클록 벡터 서명입니다. 이 값은 클록 벡터에 FeedSync 피드 항목이 없으면 1이고, 클록 벡터에 FeedSync 피드 항목이 있으면 9입니다.

    ULONG

    4

    이 클록 벡터에 포함되는 클록 벡터 요소의 수입니다.

    클록 벡터에 FeedSync 피드 항목이 포함되면 직렬화된 정보에 다음 섹션이 있고, 그렇지 않으면 다음 섹션이 없습니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    이 정보와 연결된 FeedSync 피드에 대한 업데이트 횟수입니다. 이 값은 FeedSync 피드의 updates 특성에 해당합니다.

    BYTE

    1

    FeedSync 피드에서 충돌을 추적하는지 여부를 나타냅니다. 이 값은 FeedSync 피드의 noconflicts 특성에 해당합니다. 이 값은 noconflicts가 설정되지 않으면 0이고, 그렇지 않으면 1입니다.

    클록 벡터의 나머지 부분에는 클록 벡터 섹션에 이전에 지정된 값과 같은 수의 클록 벡터 요소 목록이 포함됩니다.

    각 클록 벡터 요소에는 다음 요소가 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    복제본 키입니다.

    ULONGLONG

    8

    틱 수입니다.

    정보가 FeedSync 피드와 연결되면 각 클록 벡터 요소에 다음 요소가 추가로 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    FeedSync 피드의 when 값에서 날짜 부분입니다.

    ULONG

    4

    FeedSync 피드의 when 값에서 시간 부분입니다.

    BYTE

    1

    FeedSync 피드와 연결된 플래그입니다.

  7. 범위 집합 섹션 1. 범위 집합 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    범위 집합 섹션 서명입니다. 이 값은 항상 23입니다.

    ULONG

    4

    이 섹션에 포함되는 범위 집합의 수입니다.

    범위 집합 섹션에는 이전 ULONG에 지정된 값과 같은 수의 범위 집합 목록이 포함됩니다. 첫 번째 범위 집합은 범위 범위(scope range) 집합입니다.

    각 범위 집합에는 다음 요소가 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    범위 집합 서명입니다. 이 값은 항상 22입니다.

    ULONG

    4

    이 범위 집합에 포함되는 범위의 수입니다.

    범위 집합의 각 범위에는 다음 요소가 포함됩니다.

    항목 ID가 고정 길이인 경우

    데이터 형식 바이트 단위 길이 설명

    바이트 시퀀스

    항목 ID 형식에 지정된 길이입니다.

    범위가 시작되는 고정 길이 항목 ID입니다.

    항목 ID가 가변 길이인 경우

    데이터 형식 바이트 단위 길이 설명

    USHORT

    2

    가변 길이 ID의 길이(바이트)입니다. 이 길이에는 실제 ID를 포함하는 바이트와 길이를 포함하는 USHORT용 2바이트가 포함됩니다.

    바이트 시퀀스

    이전 USHORT에 지정된 길이입니다.

    범위가 시작되는 가변 길이 항목 ID입니다.

    각 범위에는 다음 요소가 추가로 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    직렬화된 데이터에 포함된 클록 벡터 테이블의 인덱스입니다.

  8. 열 집합 섹션 1. 열 집합 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    이 섹션에 포함되는 열의 수입니다.

    열 집합 섹션의 각 열에는 다음 요소가 포함됩니다.

    변경 단위 ID가 고정 길이인 경우

    데이터 형식 바이트 단위 길이 설명

    바이트 시퀀스

    변경 단위 ID 형식에 지정된 길이입니다.

    고정 길이의 변경 단위 ID입니다.

    변경 단위 ID가 가변 길이인 경우

    데이터 형식 바이트 단위 길이 설명

    USHORT

    2

    가변 길이 ID의 길이(바이트)입니다. 이 길이에는 실제 ID를 포함하는 바이트와 길이를 포함하는 USHORT용 2바이트가 포함됩니다.

    바이트 시퀀스

    이전 USHORT에 지정된 길이입니다.

    가변 길이의 변경 단위 ID입니다.

    열 집합 섹션의 각 열에는 다음 요소가 추가로 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    이 직렬화된 데이터에 포함된 범위 집합 섹션의 인덱스입니다.

  9. targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V3 이상이면 직렬화된 데이터에 표식 집합 섹션 1이 포함됩니다. 이 표식 집합 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 바이트 단위 길이 설명

    ULONG

    4

    표식 집합 섹션 서명입니다. 이 값은 항상 25입니다.

    BOOL

    1

    이 섹션에 나열된 항목에 모든 변경 단위가 포함되는지 아니면 모든 변경 단위를 필요로 하는지를 나타냅니다. 이 값은 변경 단위가 있으면 0이고, 변경 단위가 필요하면 1입니다. 이러한 표식 유형 중 하나만 있을 수 있습니다.

    ULONG

    4

    이 섹션에 나열된 항목 ID의 수입니다.

    표식 집합 섹션에는 이전 ULONG에 포함된 값과 같은 수의 항목 ID 목록이 포함됩니다.

    각 항목 ID에는 다음 요소가 포함됩니다.

    항목 ID가 고정 길이인 경우

    데이터 형식 바이트 단위 길이 설명

    바이트 시퀀스

    항목 ID 형식에 지정된 길이입니다.

    고정 길이 항목 ID입니다.

    항목 ID가 가변 길이인 경우

    데이터 형식 바이트 단위 길이 설명

    USHORT

    2

    가변 길이 ID의 길이(바이트)입니다. 이 길이에는 실제 ID를 포함하는 바이트와 길이를 포함하는 USHORT용 2바이트가 포함됩니다.

    바이트 시퀀스

    이전 USHORT에 지정된 길이입니다.

    가변 길이 항목 ID입니다.

참고 항목

참조

ISyncKnowledge2 인터페이스