ISyncFilterInfo::Serialize

フィルター データをバイト配列にシリアル化します。

HRESULT Serialize( 
  BYTE *pbBuffer,
  DWORD *pcbBuffer);

パラメーター

  • pbBuffer
    [in, out, size_is(*pcbBuffer)] シリアル化されたフィルター情報を返します。必要なサイズのバッファーを要求するには、この値を NULL に設定します。
  • pcbBuffer
    [in, out] pbBuffer のバイト数を指定します。書き込まれたバイト数を返します。pcbBuffer が小さすぎる場合は、フィルターのシリアル化で必要となるバイト数を返します。

戻り値

  • S_OK

  • E_INVALIDARG

  • 0x800700EA (HRESULT_FROM_WIN32(ERROR_MORE_DATA)) (pbBuffer が NULL であるか、pcbBuffer が小さすぎる場合。この場合、フィルターのシリアル化で必要となるバイト数が pcbBuffer に返されます。)

シリアル化形式

pbBuffer に含まれるシリアル化されたフィルター情報は、埋め込みなしのコンパクトな形式で、ビッグ エンディアンのバイト順に格納されています。シリアル化されたフィルター情報には、次に示す順に、次の要素が含まれています。

  1. 1 つのヘッダー セクション。ヘッダー セクションには、次の要素が含まれます。

    データ型 バイト数 説明

    ULONGLONG

    8

    フィルター情報のシリアル化形式のバージョンです。フィルターが項目フィルターまたは変更単位フィルターの場合、この値は 2 になります。フィルターがカスタム フィルターまたは統合されたフィルターの場合、この値は 3 になります。

    ULONG

    4

    フィルター情報に関連付けられたフラグです。これには、SYNC_FILTER_INFO_FLAG フラグのセットからの値が含まれます。

  2. フラグに 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 の数です。

    フィルター情報には、変更項目 ID の一覧が含まれます。この一覧の長さは、上記の ULONG に格納された値と等しくなっています。

    各変更単位 ID には、次の要素が含まれます。

    変更単位 ID が固定長の場合は、次のとおりです。

    データ型 バイト数 説明

    バイト シーケンス

    変更単位 ID 形式で指定された長さ

    固定長の変更単位 ID です。

    変更単位 ID が可変長の場合は、次のとおりです。

    データ型 バイト数 説明

    USHORT

    2

    可変長 ID の長さ (バイト数) です。この長さには、長さを示す USHORT の 2 バイトに加えて、実際の ID を示すバイト列が含まれます。

    バイト シーケンス

    上記の USHORT で指定された長さ

    可変長の変更単位 ID です。

  3. フラグに SYNC_FILTER_INFO_FLAG_CUSTOM が含まれる場合、次のフィルター データがシリアル化されます。

    データ型 バイト数 説明

    バイト シーケンス

    カスタム フィルターによって決まります。

    ISyncFilter::Serialize メソッドによってストリームに書き込まれた、シリアル化されたフィルター データです。

  4. フラグに SYNC_FILTER_INFO_COMBINED が含まれる場合、次のフィルター データがシリアル化されます。

    データ型 バイト数 説明

    ULONG

    4

    組み合わせにおける最初のフィルター情報オブジェクトの長さ (バイト数) です。

    バイト シーケンス

    上記の ULONG で指定された長さ

    このドキュメントで指定された形式の、最初のフィルターのシリアル化されたフィルター情報です。

    ULONG

    4

    組み合わせにおける 2 番目のフィルター情報オブジェクトの長さ (バイト数) です。

    バイト シーケンス

    上記の ULONG で指定された長さ

    このドキュメントで指定された形式の、2 番目のフィルターのシリアル化されたフィルター情報です。

参照

リファレンス

ISyncFilterInfo インターフェイス