次の方法で共有


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、それ以外の場合はエラー コードになります。 人間が読める形式のエラー コードは、PartyManager::GetErrorMessage() を介して取得できます。

解説

このメソッドは、ロビー ライブラリにリモート デバイスまたはサービスと状態を同期する機会を提供し、このメソッドへの前回の呼び出し以降生じた変更で、現在タイトルで使用可能なすべての変更の一覧を取得します。 アプリは、与えられた 0 以上の変更の配列を使用して、独自の状態や UI を更新してから、適切なタイミングでそれらを使用して PFMultiplayerFinishProcessingLobbyStateChanges() を呼び出す必要があります。

ライブラリによって公開されるロビー ライブラリの状態は、この呼び出し中に変更される可能性があるため、ライブラリを使用する際にはスレッド セーフである必要があります。 たとえば、別のワーカー スレッドが PFLobbyGetMembers() によって返されるロビー メンバーの一覧をループしているのと同時に、UI スレッドで PFMultiplayerStartProcessingLobbyStateChanges() を呼び出すと、PFMultiplayerStartProcessingLobbyStateChanges() がメンバー リストに関連付けられているメモリを変更できるため、クラッシュする可能性があります。 PFMultiplayerStartProcessingLobbyStateChanges() は、少なくともグラフィック フレームごとに 1 回、頻繁に呼び出す必要があります。 影響を最小限に抑えながらメインの UI スレッドで呼び出せるように、すばやく実行・返却する設計となっています。 最適な結果を得るためには、FinishProcessingStateChanges() を呼び出す前に状態の変化の処理に費やす時間を最小限に抑える必要もあります。

PFMultiplayerStartProcessingLobbyStateChanges() によって返される各状態変更は、PFMultiplayerFinishProcessingLobbyStateChanges() に 1 回だけ返す必要がありますが、順不同で返される場合があり、PFMultiplayerFinishProcessingLobbyStateChanges() への他の呼び出しからの状態変更とインターリーブされる場合があります。 特定の状態変更に関連付けられているリソースは、状態の変更が PFMultiplayerFinishProcessingLobbyStateChanges() に返されるまで有効なままであることが保証されます。

要件

ヘッダー: PFLobby.h

関連項目

PFLobby メンバー
PFLobbyStateChange
PFMultiplayerFinishProcessingLobbyStateChanges