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