管理组记录
组记录是发布到对等组的所有活动成员的特定数据,例如聊天消息或特定于应用程序的状态更新。 记录由 PEER_RECORD 结构表示,并包含以下有关对等方的信息:
- 记录 ID 是一个值,用于唯一标识对等组中的记录。
- 指定记录类型的 GUID。 应用程序可以支持不同的记录类型。 应用程序根据记录类型解释记录 的数据 字段。 某些 GUID 是保留的,当应用程序尝试使用它们时,API 调用将返回 PEER_E_NOT_AUTHORIZED 。
- 描述为 XML 字符串的一组记录属性。 搜索记录时会使用这些属性。 有关属性的详细信息,请参阅 记录属性架构。
- 创建记录的对等时间。
- 记录过期的对等时间。
- 修改记录的对等时间。
- 记录的创建者。
- 修改记录的成员。
- 包含此PEER_RECORD结构中所有字段的加密签名的PEER_DATA结构。 此字段不能由对等方直接更新或更改。
- 一个PEER_DATA结构,其中包含与此记录关联的特定于应用程序的数据(作为字节数组)。 此字段中存在的数据类型由应用程序定义的记录类型确定。
获取对等组记录
通过使用记录的 ID 调用 PeerGroupGetRecord 来获取单个记录。 处理特定类型的所有记录时,首先调用 PeerGroupEnumRecords 打开枚举,然后迭代调用 PeerGetNextItem ,直到检索所有记录,以获取所有当前对等组记录的枚举集。 完成后,关闭枚举并通过调用 PeerEndEnumeration 释放与之关联的内存。
当对等方创建、删除或更新记录时,受影响的记录将通过 PEER_GROUP_EVENT_RECORD_CHANGE 事件发布到对等组的所有成员。 请注意,如果对等方未连接到组,它将在下次连接时收到更新的记录。 如果应用程序以任何有意义的方式维护或管理记录,请务必向 PeerGroupRegisterEvent 注册此事件。 或者,应用程序可以使用 PeerGroupSearchRecords 按需查询记录数据库。
引发 PEER_GROUP_EVENT_RECORD_CHANGE 事件时,特定记录 ID 和类型以及 (添加、更新、删除) 更改的类型将作为 PEER_EVENT_RECORD_CHANGE_DATA 结构接收。 此结构是通过调用 PeerGroupGetEventData 获取的。 如果更改是添加或更新,则应使用 PeerGroupGetRecord 获取具有提供的 ID 的记录。 基础结构的本地记录数据库会自动更新。
还可以根据PEER_RECORD的 pwzAttributes 字段中提供的特定自定义属性以及任何预定义属性搜索特定记录。 为此,请将 PeerGroupSearchRecords 函数与记录搜索查询格式主题中指定的 XML 搜索查询一 起使用。
有关在对等基础结构中使用记录的更多详细信息,请参阅使用对等基础结构中的记录主题。
管理对等组记录
当初始邀请由对等组的创建者发出时,它可以指定某些成员在用户通过 PeerGroupCreateInvitation 或 PeerGroupIssueCredentials) (向用户颁发新凭据时 (PEER_GROUP_ROLE_ADMIN) 担任管理角色。 管理员能够直接添加、删除和更新任何对等组记录。 相反,角色设置为 PEER_GROUP_ROLE_MEMBER 或 PEER_GROUP_ROLE_INVITING_MEMBER 的对等组成员只能添加、更新和删除其自己的记录 () 。
默认情况下,创建者具有管理员角色。
若要更新记录,请使用 PeerGroupGetRecord 或 PeerGroupEnumRecords 获取记录,进行更改,然后将更新的记录传递到 PeerGroupUpdateRecord。
若要删除记录,请将要删除的记录 ID 传递给 PeerGroupDeleteRecord。
若要添加记录,请创建新的 PEER_RECORD 结构并填充以下字段:
- dwSize。 此字段包含 size of (PEER_RECORD) 的值。
- ftExpiration。 此字段包含此记录的过期日期和时间,以对等时间表示为 FILETIME 结构。
- type。 此字段包含一个 GUID 值,该值标识应用程序的记录类型。 如果此类型是应用程序基础结构的自定义类型,则还应填充 数据 字段。
以下字段由基础结构填充,如果应用程序设置,将忽略以下字段:
- id
- pwzCreatorId
- pwzLastModifiedById
- ftCreation
- ftLastModified
- securityData
其余字段是可选的。 若要将此新记录添加到对等组,请将其传递给 PeerGroupAddRecord。
导入和导出记录
对等组记录作为数据库在本地进行维护。 若要将对等组记录数据库的当前快照保存到本地文件,请调用 PeerGroupExportDatabase,并将其句柄传递给对等组。 然后,可以将此文件传输到其他计算机或应用程序,后者可以通过调用 PeerGroupImportDatabase 提取并使用此记录数据库。