Microsoft DirectX 8.0 (C++) |
クライアント/サーバー セッションを終了するには、サーバーが IDirectPlay8Server::Close を呼び出す。クライアント/サーバー セッションの場合、ホストは移行しないので、このメソッドによりすべての接続が終了し、セッション自体が終了する。DPN_MSGID_TERMINATE_SESSION メッセージにより、クライアントにセッション終了が通知される。
次に、サーバー自体を含む各プレーヤーへの DPN_MSGID_DESTROY_PLAYER メッセージがサーバーに届く。IDirectPlay8Server::Close は、同期メソッドであり、DPN_MSGID_DESTROY_PLAYER メッセージがすべて処理されるまで復帰しない。IDirectPlay8Server::Close から復帰すると、サーバー アプリケーションを安全にシャットダウンできるようになる。
サーバーがセッションを閉じるとき、すべての接続されているプレーヤから DPN_MSGID_DESTROY_PLAYER を受け取る。サーバーは接続を解除していることを知っているので、これは通常の振る舞いであり、構成された構造体の dwReason メンバには DPNDESTROYPLAYERREASON_NORMAL が設定される。DPNDESTROYPLAYERREASON_SESSIONTERMINATED 値は予期せぬ接続解除の場合にのみ設定される。