ISyncFilterInfo::Serialize
필터 데이터를 바이트 배열로 직렬화합니다.
HRESULT Serialize(
BYTE *pbBuffer,
DWORD *pcbBuffer);
매개 변수
- pbBuffer
[in, out, size_is(*pcbBuffer)] 직렬화한 필터 정보를 반환합니다. 필요한 버퍼 크기를 요청하려면 이 값을 NULL로 설정합니다.
- pcbBuffer
[in, out] pbBuffer의 바이트 수를 지정합니다. pcbBuffer가 너무 작으면 필터를 직렬화하는 데 필요한 바이트 수를 반환하고, 그렇지 않으면 쓴 바이트 수를 반환합니다.
반환 값
S_OK
E_INVALIDARG
pbBuffer가 NULL이거나 pcbBuffer가 너무 작으면 0x800700EA (HRESULT_FROM_WIN32(ERROR_MORE_DATA))입니다. 이 경우 필터를 직렬화하는 데 필요한 바이트 수가 pcbBuffer에 반환됩니다.
직렬화 형식
pbBuffer에 포함되는 직렬화된 필터 정보는 big-endian 바이트 순서에 따라 패딩 없이 축약 형식으로 저장됩니다. 직렬화된 필터 정보에는 다음과 같은 요소가 순서대로 포함됩니다.
헤더 섹션 1. 헤더 섹션에는 다음 요소가 포함됩니다.
데이터 형식 길이(바이트) 설명 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
필터 정보에 포함되는 변경 단위 ID가 고정 길이인지 아니면 가변 길이인지를 나타냅니다. 이 값은 ID가 고정 길이이면 0이고 가변 길이이면 1입니다.
USHORT
2
고정 길이 ID의 변경 단위 ID 길이(바이트) 또는 가변 길이 ID의 최대 ID 길이입니다.
ULONG
4
필터 정보에 포함되는 변경 단위 ID의 수입니다.
필터 정보에는 이전 ULONG에 포함된 값과 같은 길이의 변경 단위 ID 목록이 포함됩니다.
각 변경 단위 ID에는 다음 요소가 포함됩니다.
변경 단위 ID가 고정 길이인 경우
데이터 형식 길이(바이트) 설명 바이트 시퀀스
변경 단위 ID 형식에 지정된 길이입니다.
고정 길이의 변경 단위 ID입니다.
변경 단위 ID가 가변 길이인 경우
데이터 형식 길이(바이트) 설명 USHORT
2
가변 길이 ID의 길이(바이트)입니다. 이 길이에는 실제 ID를 포함하는 바이트와 길이를 포함하는 USHORT용 2바이트가 포함됩니다.
바이트 시퀀스
이전 USHORT에 지정된 길이입니다.
가변 길이의 변경 단위 ID입니다.
플래그에 SYNC_FILTER_INFO_FLAG_CUSTOM이 포함된 경우 다음 필터 데이터가 직렬화됩니다.
데이터 형식 길이(바이트) 설명 바이트 시퀀스
사용자 지정 필터에 따라 결정됩니다.
ISyncFilter::Serialize 메서드가 스트림에 작성한 직렬화된 필터 데이터입니다.
플래그에 SYNC_FILTER_INFO_COMBINED가 포함된 경우 다음 필터 데이터가 직렬화됩니다.
데이터 형식 길이(바이트) 설명 ULONG
4
조합에 있는 첫 번째 필터 정보 개체의 길이(바이트)입니다.
바이트 시퀀스
이전 ULONG에 지정된 길이입니다.
이 문서에 지정된 형식의 첫 번째 필터에 대해 직렬화된 필터 정보입니다.
ULONG
4
조합에 있는 두 번째 필터 정보 개체의 길이(바이트)입니다.
바이트 시퀀스
이전 ULONG에 지정된 길이입니다.
이 문서에 지정된 형식의 두 번째 필터에 대해 직렬화된 필터 정보입니다.