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 です。 |