PFMultiplayerStartProcessingLobbyStateChanges
检索自上次此类调用后要处理的所有 PFLobbyStateChanges 的数组。
语法
HRESULT PFMultiplayerStartProcessingLobbyStateChanges(
PFMultiplayerHandle handle,
uint32_t* stateChangeCount,
const PFLobbyStateChange* const** stateChanges
)
参数
handle
PFMultiplayerHandle
PFMultiplayer API 实例的句柄。
stateChangeCount
uint32_t*
输出
要在 stateChanges
数组中处理的游戏的 PFLobbyStateChange 条目输出数。
stateChanges
PFLobbyStateChange* const**
库分配的输出数组大小*stateChangeCount
库分配的输出数组,包括要处理的游戏的所有 PFLobbyStateChange 条目,然后传递到 PFMultiplayerFinishProcessingLobbyStateChanges()。
返回值
类型:HRESULT
如果调用成功,则为 S_OK
,否则为错误代码。 可通过 PFMultiplayerGetErrorMessage() 检索错误代码的可读形式。
备注
此方法为大厅库提供了与远程设备或服务同步状态的机会,并检索自上次调用此方法后当前对该游戏可用的所有更改列表。 游戏应使用提供的 0 个或多个更改数组来更新自己的状态或 UI,然后及时使用它们调用 PFMultiplayerFinishProcessingLobbyStateChanges()。
此调用期间,由库公开的大厅库状态可以更改,因此使用时必须确保线程安全。 例如,在一个单独的辅助线程循环访问由 PFLobbyGetMembers() 返回的大厅成员列表的同时调用 UI 线程上的 PFMultiplayerStartProcessingLobbyStateChanges() 可能会导致崩溃,因为 PFMultiplayerStartProcessingLobbyStateChanges() 可能会更改与该成员列表关联的内存。 应当经常调用 PFMultiplayerStartProcessingLobbyStateChanges() - 每个图形框架至少调用一次。 它旨在快速执行和返回,从而可以在主 UI 线程上调用它,而且影响可以忽略不计。 为获得最佳结果,还应在调用 PFMultiplayerFinishProcessingLobbyStateChanges() 之前尽量减少处理状态更改所花费的时间。
PFMultiplayerStartProcessingLobbyStateChanges() 返回的每个状态更改必须恰好返回到 PFMultiplayerFinishProcessingLobbyStateChanges() 一次,但可能会无序返回,并且可能与对 PFMultiplayerStartProcessingLobbyStateChanges() 的其他调用的状态更改交错。 与特定状态更改关联的任何资源都保证在状态更改返回到 PFMultiplayerFinishProcessingLobbyStateChanges() 之前保持有效。
要求
标头: PFLobby.h
另请参阅
PFLobby 成员
PFLobbyStateChange
PFMultiplayerFinishProcessingLobbyStateChanges