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 中所包含的序列化篩選資訊會儲存在位元組由大到小位元組順序中這類的精簡表單中,而沒有填補。序列化的篩選資訊會依下列順序,包含下列元素。
一個標頭區段。標頭區段包含下列元素。
資料類型 長度 (以位元組為單位) 描述 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
表示篩選資訊中所包含的變更單位識別碼是固定長度還是可變長度。如果識別碼是固定長度,這個值是 0,如果識別碼是可變長度,則為 1。
USHORT
2
固定長度識別碼的變更單位識別碼長度 (以位元組為單位),或可變長度識別碼的最大識別碼長度。
ULONG
4
篩選資訊中所包含的變更單位識別碼數目。
篩選資訊會包含一份變更單位識別碼的清單,而且此清單的長度等於先前在 ULONG 中包含的值。
每個變更單位識別碼都包含下列元素。
當變更單位識別碼為固定長度時。
資料類型 長度 (以位元組為單位) 描述 位元組順序
在變更單位識別碼格式中指定的長度。
固定長度的變更單位識別碼。
或者,當變更單位識別碼為可變長度時。
資料類型 長度 (以位元組為單位) 描述 USHORT
2
可變長度識別碼的長度 (以位元組為單位)。此長度包含內含長度之 USHORT 的兩個位元組,加上包含實際識別碼的位元組。
位元組順序
在先前的 USHORT 中指定的長度。
可變長度的變更單位識別碼。
當篩選旗標包括 SYNC_FILTER_INFO_FLAG_CUSTOM 時,下列篩選資料將會序列化。
資料類型 長度 (以位元組為單位) 描述 位元組順序
由自訂篩選決定。
由 ISyncFilter::Serialize 方法寫入資料流的序列化篩選資料。
當篩選旗標包括 SYNC_FILTER_INFO_COMBINED 時,下列篩選資料將會序列化。
資料類型 長度 (以位元組為單位) 描述 ULONG
4
組合中第一個篩選資訊物件的長度,以位元組為單位。
位元組順序
在先前的 ULONG 中指定的長度。
第一個篩選的序列化篩選資訊,依此文件所指定的格式表示。
ULONG
4
組合中第二個篩選資訊物件的長度,以位元組為單位。
位元組順序
在先前的 ULONG 中指定的長度。
第二個篩選的序列化篩選資訊,依此文件所指定的格式表示。