다음을 통해 공유


ISyncChangeBatchBase2::SerializeWithOptions

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

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

매개 변수

항목

정의

targetFormatVersion

[in] 직렬화된 일괄 변경 내용이 이 버전과 호환됩니다.

dwFlags

[in] 예약되어 있습니다. 이 값은 0이어야 합니다.

pbBuffer

[in, out, unique, size_is(*pdwSerializedSize)] 직렬화된 일괄 변경 내용 개체 데이터가 이 버퍼에 직렬화됩니다.

pdwSerializedSize

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

반환 값

  • S_OK

  • dwFlags가 0이 아니거나, targetFormatVersion에 지정된 버전이 일괄 변경 내용 개체 데이터와 호환되지 않으면 E_INVALIDARG입니다.

  • E_OUTOFMEMORY

  • E_POINTER

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

  • 시작되었지만 아직 끝나지 않은 그룹이 일괄 변경 내용에 포함되어 있으면 SYNC_E_INVALID_OPERATION입니다.

  • 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가 지정되면 E_INVALIDARG 또는 SYNC_E_INVALID_OPERATION이 반환됩니다.

참고

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

직렬화 형식

pbBuffer에 포함되는 직렬화된 일괄 변경 내용은 big-endian 바이트 순서에 따라 패딩 없이 축약 형식으로 저장됩니다. 직렬화된 일괄 변경 내용에는 다음과 같은 요소가 순서대로 포함됩니다.

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

    데이터 형식 길이(바이트) 설명

    ULONGLONG

    8

    일괄 변경 내용의 직렬화 형식 버전입니다. 이 값은 targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V1이면 3, targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V2이면 4, targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V3면 5입니다.

  2. targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V2이고 일괄 변경 내용에 필터 정보가 있는 경우 필터 정보 섹션 1. 필터 정보 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    필터 정보 섹션의 길이(바이트)입니다.

    나머지 필터 정보 섹션은 ISyncFilterInfo::Serialize에 설명된 형식입니다.

  3. 대상 정보 섹션 1. 대상 정보 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    대상 정보 섹션의 길이(바이트)입니다. 이 길이는 0일 수 있으며 이 경우 대상 정보가 포함되지 않습니다.

    바이트 시퀀스

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

    targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V1이면 대상 정보가 ISyncKnowledge::Serialize에 기술된 형식으로 지정되고, 그렇지 않으면 ISyncKnowledge2::SerializeWithOptions에 기술된 형식으로 지정됩니다. 직렬화된 대상 정보는 항상 직렬화된 복제본 키 맵을 포함합니다.

  4. 원본 잊어버린 정보 섹션 1. 원본 잊어버린 정보 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    원본 잊어버린 정보 섹션의 길이(바이트)입니다. 이 길이는 0일 수 있으며 이 경우 원본 잊어버린 정보가 포함되지 않습니다.

    바이트 시퀀스

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

    targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V1이면 원본 잊어버린 정보가 ISyncKnowledge::Serialize에 기술된 형식으로 지정되고, 그렇지 않으면 ISyncKnowledge2::SerializeWithOptions에 기술된 형식으로 지정됩니다. 직렬화된 원본 잊어버린 정보는 항상 직렬화된 복제본 키 맵을 포함합니다.

  5. targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V3이고 원본 필터 키 맵 정보가 있는 경우 원본 필터 키 맵 섹션 1입니다. 원본 필터 키 맵 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    원본 필터 키 맵 섹션의 길이(바이트)입니다. 이 길이는 0일 수 있으며 이 경우 원본 필터 키 맵이 포함되지 않습니다.

    USHORT

    2

    필터 키 맵의 직렬화 형식 버전입니다. 이 값은 SYNC_SERIALIZATION_VERSION_V3입니다.

    ULONG

    4

    필터 키 맵의 필터 수입니다.

    필터 키 맵의 각 필터에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    필터의 길이(바이트)입니다.

    바이트 시퀀스

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

    ISyncFilter::Serialize 메서드가 스트림에 작성한 직렬화된 필터 데이터입니다.

  6. 기본 정보 섹션 1. 기본 정보 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    직렬화된 데이터에 포함되는 기본 정보 개체의 수입니다. 이 값은 0일 수 있으며 이 경우 기본 정보가 포함되지 않습니다.

    각 기본 정보에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    기본 정보의 길이(바이트)입니다.

    바이트 시퀀스

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

    targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V1이면 기본 정보가 ISyncKnowledge::Serialize에 기술된 형식으로 지정되고, 그렇지 않으면 ISyncKnowledge2::SerializeWithOptions에 기술된 형식으로 지정됩니다. 직렬화된 기본 정보는 항상 직렬화된 복제본 키 맵을 포함합니다.

  7. 변경 내용 집합 섹션 1. 변경 내용 집합 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    직렬화된 데이터에 포함되는 변경 내용 개체의 수입니다. 이 값은 0일 수 있으며 이 경우 변경 내용이 포함되지 않습니다.

    각 변경 내용에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    변경 내용 데이터의 길이(바이트)입니다.

    ULONGLONG

    8

    변경 내용 개체의 직렬화 형식 서명입니다. 이 값은 targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V1 또는 SYNC_SERIALIZATION_VERSION_V2이면 5, targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V3면 6입니다.

    복제본 ID가 고정 길이인 경우

    데이터 형식 길이(바이트) 설명

    바이트 시퀀스

    복제본 ID 형식에 지정된 길이입니다.

    고정 길이 복제본 ID입니다.

    복제본 ID가 가변 길이인 경우

    데이터 형식 길이(바이트) 설명

    USHORT

    2

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

    바이트 시퀀스

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

    가변 길이 복제본 ID입니다.

    각 변경 내용에는 다음과 같은 요소가 추가로 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    이 내용을 변경한 복제본을 식별하는 복제본 키입니다.

    ULONGLONG

    8

    이 내용을 변경한 복제본의 틱 수입니다.

    ULONG

    4

    예약되어 있습니다. 이 값은 무시될 수 있습니다.

    ULONGLONG

    8

    예약되어 있습니다. 이 값은 무시될 수 있습니다.

    ULONG

    4

    이 항목을 만든 복제본을 식별하는 복제본 키입니다.

    ULONGLONG

    8

    이 항목을 만든 복제본의 틱 수입니다.

    항목 ID가 고정 길이인 경우

    데이터 형식 길이(바이트) 설명

    바이트 시퀀스

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

    고정 길이 항목 ID입니다.

    항목 ID가 가변 길이인 경우

    데이터 형식 길이(바이트) 설명

    USHORT

    2

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

    바이트 시퀀스

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

    가변 길이 항목 ID입니다.

    targetFormatVersion이 SYNC_SERIALIZATION_VERSION_V3 이상이면 각 변경 내용에 다음과 같은 요소가 추가로 포함됩니다.

    데이터 형식 길이(바이트) 설명

    BOOL

    1

    직렬화된 데이터에 적용되는 내용 ID가 있는지 여부를 나타냅니다. 이 값이 0이면 적용되는 내용 ID가 없음을 나타내고 이 값이 1이면 적용되는 내용 ID가 있음을 나타냅니다.

    항목 ID가 고정 길이인 경우

    데이터 형식 길이(바이트) 설명

    바이트 시퀀스

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

    고정 길이의 적용되는 내용 ID입니다.

    항목 ID가 가변 길이인 경우

    데이터 형식 길이(바이트) 설명

    USHORT

    2

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

    바이트 시퀀스

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

    가변 길이의 적용되는 내용 ID입니다.

    모든 변경 내용에는 다음과 같은 요소가 추가로 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    변경 내용과 연결된 플래그입니다. 이 값은 SYNC_CHANGE_FLAG 플래그의 조합입니다.

    ULONG

    4

    변경 내용에 대한 작업 예상률입니다.

    USHORT

    2

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

    BYTE

    1

    이 변경 내용과 연결된 배운 정보가 이 항목에 투영되는지 여부를 나타냅니다. 값이 0이면 배운 정보가 투영되지 않음을 나타내고 값이 1이면 배운 정보가 투영됨을 나타냅니다.

    ULONG

    4

    직렬화된 데이터에 포함된 기본 정보 목록에 대한 인덱스입니다. 이 값은 0일 수 있으며 이 경우 기본 정보가 이 변경 내용과 연결되지 않습니다.

    ULONG

    4

    이 변경 내용에 포함되어 있는 변경 단위의 수입니다. 이 값은 0일 수 있으며 이 경우 변경 단위가 포함되지 않습니다.

    변경 내용에는 이전 ULONG에 포함된 값과 같은 수의 변경 단위 목록이 포함됩니다.

    각 변경 단위에는 다음 요소가 포함됩니다.

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

    데이터 형식 길이(바이트) 설명

    바이트 시퀀스

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

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

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

    데이터 형식 길이(바이트) 설명

    USHORT

    2

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

    바이트 시퀀스

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

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

    각 변경 단위에는 다음과 같은 요소가 추가로 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    이 내용을 변경한 복제본을 식별하는 복제본 키입니다.

    ULONGLONG

    8

    이 내용을 변경한 복제본의 틱 수입니다.

    ULONG

    4

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

    ULONGLONG

    8

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

  8. 복구 동기화 섹션 1. 복구 동기화 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    복구 동기화 섹션의 길이(바이트)입니다. 이 값이 0이면 복구 동기화 섹션이 나오지 않습니다.

    항목 ID가 고정 길이인 경우

    데이터 형식 길이(바이트) 설명

    바이트 시퀀스

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

    일괄 변경 내용이 복구 동기화의 일부인 경우 이 일괄 변경 내용에서 변경 내용의 하한을 나타내는 고정 길이 항목 ID입니다.

    항목 ID가 가변 길이인 경우

    데이터 형식 길이(바이트) 설명

    USHORT

    2

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

    바이트 시퀀스

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

    일괄 변경 내용이 복구 동기화의 일부인 경우 이 일괄 변경 내용에서 변경 내용의 하한을 나타내는 가변 길이 항목 ID입니다.

  9. 작업 예상률 섹션 1. 작업 예상률 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    ULONG

    4

    동기화 세션의 작업 예상률입니다.

    ULONG

    4

    이 일괄 변경 내용의 작업 예상률입니다.

  10. 플래그 섹션 1. 플래그 섹션에는 다음 요소가 포함됩니다.

    데이터 형식 길이(바이트) 설명

    BYTE

    1

    이 일괄 변경 내용이 원본 공급자에서 마지막으로 보낸 일괄 변경 내용인지 여부를 나타냅니다. 이 값이 0이면 마지막 일괄 변경 내용이 아님을 나타내고 이 값이 1이면 마지막 일괄 변경 내용임을 나타냅니다.

    BYTE

    1

    이 일괄 변경 내용이 복구 동기화의 일부인지 여부를 나타냅니다. 이 값이 0이면 이 일괄 변경 내용이 복구 동기화의 일부가 아님을 나타내고 이 값이 1이면 복구 동기화의 일부임을 나타냅니다.

    BYTE

    1

    이 일괄 변경 내용이 필터링되는지 여부를 나타냅니다. 이 값이 0이면 이 일괄 변경 내용이 필터링되지 않음을 나타내고 이 값이 1이면 필터링됨을 나타냅니다.

참고 항목

참조

ISyncChangeBatchBase2 인터페이스