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