Share via


IReplicaKeyMap::Serialize

レプリカ キー マップのデータをバイト配列にシリアル化します。

HRESULT Serialize( 
  BYTE *pbReplicaKeyMap,
  DWORD *pcbReplicaKeyMap);

パラメーター

  • pbReplicaKeyMap
    [in, out, unique, size_is(*pcbReplicaKeyMap)] シリアル化されたデータを受け取るバイト配列です。
  • pcbReplicaKeyMap
    [in, out] pbReplicaKeyMap のバイト数を指定します。書き込まれたバイト数を返します。pbReplicaKeyMap が小さすぎる場合は、レプリカ キー マップのデータをシリアル化するために必要なバイト数を返します。

戻り値

  • S_OK

  • E_INVALIDARG (マップに格納されたレプリカ ID またはレプリカ キーが有効でない場合)

  • E_POINTER

  • E_OUTOFMEMORY

  • HRESULT_FROM_WIN32(ERROR_MORE_DATA) (pbReplicaKeyMap が小さすぎる場合。この場合、必要なバイト数が pcbReplicaKeyMap で返されます。)

シリアル化形式

pbReplicaKeyMap に含まれるシリアル化されたレプリカ キー マップは、コンパクトな形式で、ビッグ エンディアンのバイト順に格納されています。

シリアル化されたレプリカ キー マップには、以下の要素が以下に示す順序で含まれます。

データ型 バイト数 説明

ULONG

4

レプリカ キー マップの署名です。この値は常に 5 です。

BOOL

1

レプリカ キー マップに含まれるレプリカ ID が固定長か可変長かを示します。この値は、ID が固定長の場合に 0、可変長の場合に 1 になります。

USHORT

2

固定長 ID の場合はレプリカ ID の長さ (バイト数)、可変長 ID の場合は ID の最大長です。

ULONG

4

レプリカ キー マップのエントリ数です。

レプリカ キー マップ セクションには、レプリカ キー マップのエントリの一覧が含まれ、この一覧のエントリ数は、上記の ULONG に格納されている値と一致します。

レプリカ ID が固定長の場合は、次のとおりです。

データ型 バイト数 説明

バイト シーケンス

レプリカ ID の形式で指定された長さ

固定長のレプリカ ID です。

レプリカ ID が可変長の場合は、次のとおりです。

データ型 バイト数 説明

USHORT

2

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

バイト シーケンス

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

可変長のレプリカ ID です。

参照

リファレンス

IReplicaKeyMap インターフェイス