[C++]
アプリケーションでは、IDirectPlay4::EnumSessions を非同期的に呼び出して、自動リフレッシュ式のセッション リストを維持することができる。この方法は、Bellhop、DPChat、DPSlots、Duel、および Override の 5 つの DirectPlay サンプルで利用されている。これらのサンプル アプリケーションのコード例は、いずれも参照可能である。
自動リフレッシュ式のセッション リストを作成するためのステップは、次のとおりである。
- IDirectPlay4::EnumSessions を呼び出す。このとき、DPENUMSESSIONS_ASYNC フラグを設定し、タイムアウトをゼロに設定する (これにより、サービス プロバイダのデフォルト値が使用される)。このメソッドはセッションを列挙せず、直ちに戻る。しかし、DirectPlay はバックグラウンドでセッションを列挙している。
- すべてのセッションを表示するユーザー インターフェイスを表示する。セッション リストのリフレッシュを実行する間隔に応じて、タイマを設定する。アプリケーションで列挙のデフォルトのタイムアウト間隔を確認するには、IDirectPlay4::GetCaps を呼び出す。
- タイマが開始するたびに、EnumSessions を呼び出して現在のセッション リストを取得する。このリストは、アクティブなセッションの完全なリストである。古いセッションは削除され、新しいセッションは追加され、既存のセッションは更新されている。EnumSessions を呼び出す前にリストからすべての項目を削除し、EnumSessionsCallback2 関数によってリストにセッションを再度追加する。
- DPERR_CONNECTING 以外のエラーが返された場合は、EnumSessions によって返されたエラー結果を確認し、タイマを停止する。これによりユーザーは、接続を解除したり、キャンセルしたりすることができるようになる。