Microsoft DirectX 8.0 (C++) |
セッションがホストによって終了されると、Microsoft® DirectPlay® により DPN_MSGID_TERMINATE_SESSION メッセージが生成される。
DPNMSG_TERMINATE_SESSION 構造体には、DPN_MSGID_TERMINATE_SESSION システム メッセージに関する情報が保持される。
typedef struct { DWORD dwSize; HRESULT hResultCode; PVOID pvTerminateData; DWORD dwTerminateDataSize; } DPNMSG_TERMINATE_SESSION, *PDPNMSG_TERMINATE_SESSION;
ホストの移行が許可されるピアツーピア ゲームでは、現在のホストが Close を呼び出すか応答を停止した場合、セッションは終了しない。その代わりに、ホストが移行し、ホスト以外のすべてのプレーヤーは、ホストのプレーヤーに関する DPN_MSGID_DESTROY_PLAYER メッセージと新しいホストに関する DPN_MSGID_HOST_MIGRATE メッセージを受け取る。ホストの移行を行わないためには、ホストが IDirectPlay8Peer::TerminateSession を呼び出してセッションをシャットダウンしなければならない。ホストがこの方法でセッションを終了すると、すべてのプレーヤーが、hResultCode を DPNERR_HOSTTERMINATEDSESSION に設定した DPN_MSGID_TERMINATE_SESSION メッセージを受け取る。セッションは終了し、プレーヤー全員に対する DPN_MSGID_DESTROY_PLAYER メッセージが生成される。
ホストの移行を許可しないピアツーピア ゲームでは、ホストが IDirectPlay8Peer::Close を呼び出すか応答を停止した場合、セッションは終了する。その場合、hResultCode を DPNERR_CONNECTIONLOST に設定した DPN_MSGID_TERMINATE_SESSION がすべてのプレーヤーに送信される。セッションは終了し、プレーヤー全員に対する DPN_MSGID_DESTROY_PLAYER メッセージが生成される。
クライアント/サーバー ゲームでも、ホストが IDirectPlay8Server::Close を呼び出すか応答を停止した場合、セッションは終了する。その場合、hResultCode を DPNERR_CONNECTIONLOST に設定した DPN_MSGID_TERMINATE_SESSION が、接続しているすべてのクライアントに送信される。DPN_MSGID_DESTROY_PLAYER メッセージはクライアントには送信されない。サーバーが IDirectPlay8Server::Close を呼び出して接続を解除すると、サーバーは、サーバー自身を含むすべてのプレーヤーに関する DPN_MSGID_DESTROY_PLAYER メッセージを受け取る。それ以外の場合、サーバーはクライアントのプレーヤーに関する DPN_MSGID_DESTROY_PLAYER だけを受け取る。
注 DPN_MSGID_TERMINATE_SESSION メッセージは通常 DPN_MSGID_DESTROY_PLAYER メッセージより先に到着する。ただし、到着の順序は保証されていない。
Windows NT/2000 : Windows 2000 以降に対する再配布可能ファイルとして提供。
Windows 95/98 : Windows 95 以降に対する再配布可能ファイルとして提供。
ヘッダー : Dplay8.h で宣言。