다음을 통해 공유


ISyncKnowledge::Serialize

정보 개체 데이터를 바이트 배열로 serialize합니다.

HRESULT Serialize( 
  BOOL fSerializeReplicaKeyMap,
  BYTE *pbKnowledge,
  DWORD *pcbKnowledge);

매개 변수

  • fSerializeReplicaKeyMap
    [in] 정보에 포함된 IReplicaKeyMap 개체를 serialize하려면 TRUE이고, 그렇지 않으면 FALSE입니다.
  • pbKnowledge
    [in, out, unique, size_is(*pcbKnowledge)] serialize된 정보 데이터를 수신하는 바이트 배열입니다.
  • pcbKnowledge
    [in, out] pbKnowledge의 바이트 수를 지정합니다. pbKnowledge가 너무 작으면 복제본 키 맵 데이터를 직렬화하는 데 필요한 바이트 수를 반환하고, 그렇지 않으면 쓴 바이트 수를 반환합니다.

반환 값

  • S_OK

  • E_POINTER

  • E_INVALIDARG

  • E_OUTOFMEMORY

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

주의

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

직렬화 형식

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

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

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

    ULONG

    4

    직렬화 형식의 주 버전입니다. 이 값은 항상 3입니다.

    ULONG

    4

    직렬화 형식의 부 버전입니다. 이 값은 항상 0입니다.

  2. fSerializeReplicaKeyMap이 TRUE인 경우 복제본 키 맵 섹션 1. 그렇지 않으면 복제본 키 맵 섹션이 없습니다. 복제본 키 맵 섹션의 형식은 IReplicaKeyMap::Serialize에서 정의됩니다.

  3. 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 길이입니다.

  4. 범위 클록 벡터 섹션 1. 범위 클록 벡터 섹션에는 다음 요소가 포함됩니다.

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

    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 피드와 연결된 플래그입니다.

  5. 범위 예외 섹션 1. 범위 예외 섹션에는 다음 요소가 포함됩니다.

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

    ULONG

    4

    범위 예외 섹션 서명입니다. 이 값은 항상 3입니다.

    ULONG

    4

    정보에 포함되는 범위 예외의 수입니다.

    범위 예외 섹션에는 이전 ULONG에 지정한 값과 같은 수의 범위 예외 목록이 포함됩니다.

    각 범위 예외에는 다음 요소가 포함됩니다.

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

    ULONG

    4

    범위 예외 서명입니다. 이 값은 항상 2입니다.

    항목 ID가 고정 길이인 경우

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

    바이트 시퀀스

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

    범위에서 하한 항목 ID의 고정 길이 항목 ID입니다.

    바이트 시퀀스

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

    범위에서 상한 항목 ID의 고정 길이 항목 ID입니다.

    항목 ID가 가변 길이인 경우

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

    USHORT

    2

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

    바이트 시퀀스

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

    범위에서 하한 항목 ID의 가변 길이 항목 ID입니다.

    USHORT

    2

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

    바이트 시퀀스

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

    범위에서 상한 항목 ID의 가변 길이 항목 ID입니다.

    범위 예외와 연결된 클록 벡터입니다.

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

    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 피드와 연결된 플래그입니다.

  6. 단일 항목 예외 섹션 1. 단일 항목 예외 섹션에는 다음 요소가 포함됩니다.

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

    ULONG

    4

    단일 항목 예외 섹션 서명입니다. 이 값은 항상 6입니다.

    ULONG

    4

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

    ULONG

    4

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

    1. 클록 벡터 테이블. 클록 벡터 테이블에는 이전 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 피드와 연결된 플래그입니다.

    2. 단일 항목 예외 테이블. 단일 항목 예외 테이블에는 다음 요소가 포함됩니다.

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

      ULONG

      4

      단일 항목 예외 테이블에 포함되는 단일 항목 예외의 수입니다.

      테이블의 각 단일 항목 예외에는 다음 요소가 포함됩니다.

      항목 ID가 고정 길이인 경우

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

      바이트 시퀀스

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

      단일 항목 예외와 연결되는 고정 길이 항목 ID입니다.

      항목 ID가 가변 길이인 경우

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

      USHORT

      2

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

      바이트 시퀀스

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

      단일 항목 예외와 연결되는 가변 길이 항목 ID입니다.

      각 단일 항목 예외에는 다음과 같은 요소가 추가로 포함됩니다.

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

      ULONG

      4

      단일 항목 예외가 항목을 가리키면 이 값은 직렬화된 데이터에 포함된 클록 벡터 테이블의 인덱스이고, 단일 항목 예외가 하나 이상의 변경 단위 예외를 가리키면 이 값은 0xFFFFFFFF입니다.

      ULONG

      4

      예외에 포함되어 있는 변경 단위 예외의 수입니다. 이 값은 0일 수 있습니다.

      변경 단위 예외가 있으면 변경 단위 예외 목록이 뒤에 나옵니다. 이 목록에는 이전 ULONG에 지정된 변경 단위 예외의 수가 포함됩니다.

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

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

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

      바이트 시퀀스

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

      변경 단위 예외와 연결된 고정 길이의 변경 단위 ID입니다.

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

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

      USHORT

      2

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

      바이트 시퀀스

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

      변경 단위 예외와 연결된 가변 길이의 변경 단위 ID입니다.

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

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

      ULONG

      4

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

참고 항목

참조

ISyncKnowledge 인터페이스