IReplicaKeyMap::Serialize

将副本键映射数据序列化到一个字节数组。

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

参数

  • pbReplicaKeyMap
    [in, out, unique, size_is(*pcbReplicaKeyMap)] 接收序列化数据的字节数组。
  • pcbReplicaKeyMap
    [in, out] 指定 pbReplicaKeyMap 中的字节数。如果 pbReplicaKeyMap 太小,则返回序列化副本键映射数据所需的字节数;否则返回写入的字节数。

返回值

  • S_OK。

  • 如果存储在映射中的副本 ID 或副本键无效,则返回值为 E_INVALIDARG。

  • E_POINTER。

  • E_OUTOFMEMORY。

  • 如果 pbReplicaKeyMap 太小,则返回值为 HRESULT_FROM_WIN32(ERROR_MORE_DATA)。在这种情况下,将在 pcbReplicaKeyMap 中返回必需的字节数。

序列化格式

包含在 pbReplicaKeyMap 中的序列化副本键映射以压缩形式并按 Big-Endian 字节顺序存储。

序列化副本键映射按如下顺序包含以下元素:

数据类型 以字节为单位的长度 说明

ULONG

4

副本键映射签名。此值始终为 5。

BOOL

1

指示包含在副本键映射中的副本 ID 是固定长度还是可变长度。如果副本 ID 是固定长度,则此值为 0;如果副本 ID 是可变长度,则此值为 1。

USHORT

2

固定长度 ID 的副本 ID 的长度(以字节为单位),或可变长度 ID 的副本 ID 的最大长度。

ULONG

4

副本键映射中的条目数。

副本键映射部分包含一个副本键映射条目的列表,其中条目的数量与上一个 ULONG 中包含的数值相等。

当副本 ID 为固定长度时:

数据类型 以字节为单位的长度 说明

字节序列

在副本 ID 格式中指定的长度。

固定长度的副本 ID。

或者,当副本 ID 为可变长度时:

数据类型 以字节为单位的长度 说明

USHORT

2

可变长度的 ID 的长度(以字节为单位)。此长度包括包含长度的 USHORT 的两个字节以及包含实际 ID 的字节。

字节序列

上一个 USHORT 中指定的长度。

可变长度的副本 ID。

请参阅

参考

IReplicaKeyMap 接口