CONST_DPSYSMSGTYPES
CONST_DPSYSMSGTYPES 列挙型のメンバは、システム メッセージとロビー メッセージの異なる種類を識別するために利用される。システム メッセージまたはロビー メッセージを表す各 DirectPlayMessage オブジェクトは、DirectPlayMessage.ReadLong の最初の呼び出しから、これらの定数のいずれかを返す。メッセージの種類を判断し、DirectPlayMessage のさまざまな読み取りメソッドを呼び出してデータを解析するのは、アプリケーションの役割である
DPLSYS_GETPROPERTY および DPLSYS_SETPROPERTY の 2 つのロビー メッセージは、システムではなく、アプリケーションによって送信される。アプリケーションでは、DirectPlayMessage の適切な書き込みメソッドを使用して、タイプ識別子と、管理する残りのデータを記述する必要がある。
アプリケーションでは、通常のシステム メッセージとロビー メッセージを分けて扱うことが重要である。一部のロビー メッセージと非ロビー メッセージは、同じ値を共有する (DPLSYS_SETPROPERTY と DPSYS_DESTROYPLAYERORGROUP など)。したがって、メッセージがロビー メッセージか非ロビー メッセージかを示す情報を使用せずに、すべてのメッセージを共通のハンドラに送るのは賢明ではない。
Enum CONST_DPSYSMSGTYPES
DPLSYS_APPTERMINATED = 4
DPLSYS_CONNECTIONSETTINGSREAD = 1
DPLSYS_DPLAYCONNECTFAILED = 2
DPLSYS_DPLAYCONNECTSUCCEEDED = 3
DPLSYS_GETPROPERTY = 7
DPLSYS_GETPROPERTYRESPONSE = 8
DPLSYS_NEWCONNECTIONSETTINGS = 10
DPLSYS_NEWSESSIONHOST = 9
DPLSYS_SETPROPERTY = 5
DPLSYS_SETPROPERTYRESPONSE = 6
DPSYS_ADDGROUPTOGROUP = 261 (&H105)
DPSYS_ADDPLAYERTOGROUP = 7
DPSYS_CHAT = 265 (&H109)
DPSYS_CREATEPLAYERORGROUP = 3
DPSYS_DELETEGROUPFROMGROUP = 262 (&H106)
DPSYS_DELETEPLAYERFROMGROUP = 33 (&H21)
DPSYS_DESTROYPLAYERORGROUP = 5
DPSYS_HOST = 257 (&H101)
DPSYS_SECUREMESSAGE = 263 (&H107)
DPSYS_SENDCOMPLETE = 269 (&H10D)
DPSYS_SESSIONLOST = 49 (&H31)
DPSYS_SETGROUPOWNER = 266 (&H10A)
DPSYS_SETPLAYERORGROUPDATA = 258 (&H102)
DPSYS_SETPLAYERORGROUPNAME = 259 (&H103)
DPSYS_SETSESSIONDESC = 260 (&H104)
DPSYS_STARTSESSION = 264 (&H108)
End Enum
以下の記述には、各メッセージ タイプの余分なデータ メンバのリストが含まれている。これらは、基になる構造体で使用される順番に書かれている (基になる C/C++ 構造体の詳細については、「システム メッセージ」を参照すること)。ここでは、アプリケーションが ReadLong を使用して、既にメッセージ タイプを取得したものと仮定している。
メッセージ データが Long 型の値と、それに続く GUID で構成されている場合、アプリケーションでは、最初に DirectPlayMessage.ReadLong を呼び出し、次に DirectPlayMessage.ReadString を呼び出して、データを解析することができる。基になる構造体にバッファへのポインタが含まれている場合、DirectPlayMessage.ReadSysChatString などの特別なメソッドを使用して、バッファからデータを取得する必要がある。
- 標準ロビー メッセージ
-
- DPLSYS_APPTERMINATED
- DirectPlayLobby3.RunApplication によって開始されたアプリケーションが終了した。
- GUID
- ロビー メッセージを適用するセッションの一意の識別子。
- DPLSYS_CONNECTIONSETTINGSREAD
- DirectPlayLobby3.RunApplication によって開始されたアプリケーションが、接続設定を読み取った。
- GUID
- ロビー メッセージを適用するセッションの一意の識別子。
- DPLSYS_DPLAYCONNECTFAILED
- DirectPlayLobby3.RunApplication によって開始されたアプリケーションが、セッションへの接続に失敗した。
- GUID
- ロビー メッセージを適用するセッションの一意の識別子。
- DPLSYS_DPLAYCONNECTSUCCEEDED
- DirectPlayLobby3.RunApplication によって開始されたアプリケーションが、セッションを作成してほかのアプリケーションの参加を待機しているか、またはセッションへの参加に成功した。
- GUID
- ロビー メッセージを適用するセッションの一意の識別子。
- DPLSYS_GETPROPERTY
- アプリケーションからロビーに対し、プロパティの現在の値を要求するために送信されるメッセージ。
- Long
- 要求を識別するアプリケーションによって生成される ID。ロビーの応答は、この ID に送信される。アプリケーションでは、この要求 ID を使用して、応答を保留中の要求に一致させることができる。
- GUID
- このプロパティが適用されるプレーヤーの一意な識別子 (適用される場合)。このプロパティがプレーヤーに固有のものではない場合、このメンバには空の文字列を設定する必要がある。
- GUID
- 要求されているプロパティの一意な識別子。DirectPlay は、特定のプロパティを定義する。アプリケーションまたはロビーは、追加のプロパティに対する独自の GUID を定義することができる。詳細については、DirectPlay C++ リファレンスの「DirectPlay 定義済みプロパティ」を参照すること。
- DPLSYS_GETPROPERTYRESPONSE
- DPLSYS_GETPROPERTY メッセージに応答して、ロビーからアプリケーションに送信されるメッセージ。
- Long
- 応答している要求の ID。
- GUID
- このプロパティが適用されるプレーヤーの一意な識別子。このプロパティがプレーヤーに固有のものでない場合は、このメンバには空の文字列を設定する。この値は、DPLSYS_GETPROPERTY メッセージで渡された値と同じである。
- GUID
- 要求されているプロパティの一意な識別子。この値は、DPLSYS_GETPROPERTY メッセージで渡された値と同じである。
- Long
- プロパティを取得する要求に対する戻りコード。要求が成功した場合は 0、それ以外の場合は
DPERR_UNKNOWNMESSAGE または
DPERR_UNAVAILABLE のいずれかになる。
- Long
- データのサイズを示すバイト数。この値の後に、プロパティ データを含む可変サイズのバッファが続く。このプロパティ タグにより、このデータの読み取り方法と解釈方法が決まる。詳細については、DirectPlay C++ リファレンスの「DirectPlay 定義済みプロパティ」を参照すること。
- DPLSYS_NEWCONNECTIONSETTINGS
- ロビー システム メッセージ。ロビー クライアントが DirectPlayLobby3.RunApplication を呼び出すと、待機中のアプリケーションが見つかる。待機中のアプリケーションは、DirectPlayLobby3.GetConnectionSettings を使用して、接続設定を読み取ることができる。
- GUID
- ロビー メッセージを適用するセッションの一意の識別子。
- DPLSYS_NEWSESSIONHOST
- ロビーから、新たにセッションのホストになったアプリケーション インスタンスに送信されるメッセージ。
- GUID
- このインスタンスの、一意な識別子。
- DPLSYS_SETPROPERTY
- プロパティの値を設定するために、アプリケーションからロビーに送信されるメッセージ。
- Long
- 要求を識別する、アプリケーションによって生成される ID。ロビーの応答は、この ID に送信される。アプリケーションでは、この要求 ID を使用して、応答を保留中の要求に一致させることができる。
- GUID
- このプロパティが適用されるプレーヤーの一意な識別子。このプロパティがプレーヤーに固有のものでない場合は、このメンバには空の文字列を設定する。
- GUID
- 要求されているプロパティの一意な識別子。DirectPlay は、特定のプロパティを定義する。アプリケーションまたはロビーは、追加のプロパティに対する独自の GUID を定義することができる。
- Long
- データのサイズを示すバイト。この値の後に、プロパティ データを含む可変サイズのバッファが続く。このプロパティ タグにより、このデータの整理方法と書き込み方法が決まる。たとえば、DPLPROPERTY_PlayerScore プロパティの場合は、DirectPlayMessage.WriteLong を 1 回呼び出してスコアの数を記録し、各スコアに対してこのメソッドを再度呼び出す。詳細については、DirectPlay C++ リファレンスの「DirectPlay 定義済みプロパティ」を参照すること。
- DPLSYS_SETPROPERTYRESPONSE
- DPLSYS_SETPROPERTY メッセージに応答して、ロビーからアプリケーションに送信されるメッセージ。
- Long
- 応答している要求の ID。
- GUID
- このプロパティが適用されるプレーヤーの一意な識別子 (適用される場合)。このプロパティがプレーヤーに固有のものではない場合、このメンバには空の文字列を設定する。この値は、DPLSYS_SETPROPERTY メッセージで渡された値と同じである。
- GUID
- 要求されているプロパティの一意な識別子。この値は、DPLSYS_SETPROPERTY メッセージで渡された値と同じである。
- Long
- プロパティを設定する要求に対する戻りコード。要求が成功した場合は 0、それ以外の場合は DPERR_ACCESSDENIED または
DPERR_UNKNOWNMESSAGE のいずれかになる。
- 非ロビー システム メッセージ
-
- DPSYS_ADDGROUPTOGROUP
- グループがグループに追加された。
- Long
- グループが追加されたグループの ID。
- Long
- グループに追加されたグループの ID。
- DPSYS_ADDPLAYERTOGROUP
- プレーヤーがグループに追加された。
- Long
- プレーヤーが追加されたグループの ID。
- Long
- グループに追加されたプレーヤーの ID。
- DPSYS_CHAT
- メッセージは、ロビーを介して転送されるチャット文字列である。
- Long
- フラグ。常に 0。
- Long
- メッセージを発信したプレーヤーの ID。DPID_SERVERPLAYER は、メッセージがサーバーから発信されたことを示す。
- Long
- メッセージが送信されたプレーヤーの ID。この ID が 0 の場合、メッセージはグループに送信されたか、全員にブロードキャストされた。
- Long
- メッセージが送信されたグループの ID。この ID が 0 で、直前の Long も 0 の場合、メッセージは全員にブロードキャストされた。
- Long
- チャット文字列へのポインタ。この文字列を読み取るには、DirectPlayMessage.ReadSysChatString メソッドを使用する。
- DPSYS_CREATEPLAYERORGROUP
- プレーヤーまたはグループが作成された。
- Long
- プレーヤー (DPPLAYERTYPE_PLAYER) またはグループ (DPPLAYERTYPE_GROUP) のどちらが作成されたのかを示すフラグ。
- Long
- 作成されたプレーヤーまたはグループの ID。
- Long
- セッション内のプレーヤーの数。
- Long (2)
- グループに対するローカル データを含むバッファへのポインタと、そのサイズ。このバッファの中身を取得するには、DirectPlayMessage.ReadSysMsgData メソッドを使用する。
- Long (2)
- グループに対するリモート データを含むバッファへのポインタと、そのサイズ。このバッファの中身を取得するには、ReadSysMsgData を使用する。
- Long
- 基になる名前構造体のサイズをバイトで示す。無視できる。
- Long
- 名前構造体に対するフラグ。常に 0。
- String
- グループのショート ネーム。
- String
- グループのロング ネーム。
- Long
- グループが DirectPlay4.CreateGroupInGroup の呼び出しによって作成された場合は、親グループの ID。それ以外の場合は 0。
- Long
- プレーヤーまたはグループのフラグ。0 または DPGROUP_HIDDEN になる (「CONST_DPGROUPFLAGS」を参照)。
- DPSYS_DELETEGROUPFROMGROUP
- グループからグループが削除された。
- Long
- グループが削除されたグループの ID。
- Long
- 削除されたグループの ID。
- DPSYS_DELETEPLAYERFROMGROUP
- グループからプレーヤーが削除された。
- Long
- プレーヤーが削除されたグループの ID。
- Long
- 削除されたプレーヤーの ID。
- DPSYS_DESTROYPLAYERORGROUP
- プレーヤーまたはグループが破棄された。
- Long
- プレーヤー (DPPLAYERTYPE_PLAYER) またはグループ (DPPLAYERTYPE_GROUP) のどちらが破棄されたのかを示すフラグ。
- Long
- 破棄されたプレーヤーまたはグループの ID。
- Long (2)
- グループに対するローカル データを含むバッファへのポインタと、そのサイズ。このバッファの中身を取得するには、DirectPlayMessage.ReadSysMsgData メソッドを使用する。
- Long (2)
- グループに対するリモート データを含むバッファへのポインタと、そのサイズ。このバッファの中身を取得するには、ReadSysMsgData を使用する。
- Long
- 基になる名前構造体のサイズをバイトで示す。無視できる。
- Long
- 名前構造体に対するフラグ。常に 0。
- String
- グループのショート ネーム。
- String
- グループのロング ネーム。
- Long
- 破棄されているグループが親グループのサブグループである場合、つまり、破棄されているグループが DirectPlay4.CreateGroupInGroup の呼び出しによって作成されたものである場合は、親グループの ID。それ以外の場合は 0。
- Long
- プレーヤーまたはグループのフラグ。CONST_DPGROUPFLAGS 列挙型の以下のいずれかの値を含むことができる。
DPGROUP_HIDDEN
隠れたグループが破棄されたときに設定される。
DPGROUP_STAGINGAREA
ステージング領域であるグループが破棄されたときに設定される。
DPPLAYER_SERVERPLAYER
破棄されているプレーヤーがクライアント/サーバー通信のサーバー プレーヤーである場合に設定される。
DPPLAYER_SPECTATOR
破棄されているプレーヤーが観客である場合に設定される。
- DPSYS_HOST
- メッセージを受信しているプレーヤーは、セッションのホストである。このメッセージは、それ以上のデータを含んでいない。
- DPSYS_SECUREMESSAGE
- 別のプレーヤーが署名付きまたは暗号化されたメッセージを受信した。
- Long
- 送信者によるメッセージの保証方法を示すフラグ。CONST_DPSENDFLAGS 列挙型の以下のいずれかの値になる。
DPSEND_SIGNED
メッセージは送信者によって署名され、その署名は正しいものであると確認された。
DPSEND_ENCRYPTED
メッセージは送信者によって暗号化され、正しく復号化された。
- Long
- メッセージを送信したプレーヤーの ID。
復号化されたメッセージを読み取るには、DirectPlayMessage.MoveToSecureMessage メソッドを使用して、読み取りポインタをデータ バッファの開始部分に移動する。データを読み取るには、DirectPlayMessage の標準の読み取りメソッドを使用する。
- DPSYS_SENDCOMPLETE
- 非同期送信の完了状態を通知するために、アプリケーションに送信されるメッセージ。このメッセージは、デフォルトでは、DirectPlay4.SendEx で DPSEND_ASYNC フラグを使用して非同期メッセージが送信されるたびに、生成される。
- Long
- メッセージを送信したプレーヤーの ID。
- Long
- メッセージが送信されたプレーヤーの ID。
- Long
- メッセージが送信されたときに、SendEx で指定されたフラグ。
- Long
- メッセージの送信時の優先順位。
- Long
- メッセージが送信されたときに、SendEx で指定されたタイムアウト。0 は、デフォルトのタイムアウトを示す。
- Long
- アプリケーションから SendEx に提供された context パラメータ。
- Long
- SendEx によってアプリケーションに返されたメッセージ ID。
- Long
- 非同期メッセージの結果。メッセージが正しく送信された場合は 0、それ以外の場合は、以下のいずれかのエラー コードになる。
DPERR_ABORTED
メッセージは、転送中にキャンセルされた。
DPERR_CANCELLED
メッセージは、送信キュー内でキャンセルされた。
DPERR_GENERIC
メッセージを送信できなかった。
DPERR_TIMEOUT
メッセージはタイムアウトになり、送信キューから削除された。
- Long
- アプリケーションによってメッセージが送信されてから、DirectPlay がそのメッセージを送信したときまでの経過時間をミリ秒で示す。これには、送信キュー内で費やした時間と、メッセージをサービス プロバイダに渡すまでに費やした時間が含まれる。保証付きのメッセージの場合は、メッセージの配信の確認に要した時間も含まれる。
- DPSYS_SESSIONLOST
- ほかのすべてのプレーヤーへの接続が失われた。セッションが失われると、リモート プレーヤーにメッセージを送信することはできないが、セッションが失われたときのデータは依然としてすべて利用可能である。アプリケーションでこのメッセージを受信した場合は、すみやかに復元し、終了する必要がある。このメッセージには、これ以上のデータはない。
- DPSYS_SETGROUPOWNER
- グループの所有者が変更した。グループの所有権は、セッションを離れる現在の所有者が DirectPlay4.SetGroupOwner を呼び出して変更するか、またはロビー セッション内のロビー サーバーが変更することができる。
- Long
- 所有者が変更したグループの ID。
- Long
- グループの新しい所有者のプレーヤー ID。
- Long
- グループの古い所有者のプレーヤー ID。
- DPSYS_SETPLAYERORGROUPDATA
- DirectPlay は、プレーヤーまたはグループのリモート データが変更されたときに、このメッセージを生成して、各プレーヤーに送信する。セッション記述で DPSESSION_NODATAMESSAGES フラグが設定されている場合は、このメッセージは生成されない。
- Long
- メッセージがプレーヤー (DPPLAYERTYPE_PLAYER) またはグループ (DPPLAYERTYPE_GROUP) のどちらに適用されるのかを示す。
- Long
- データが変更されたプレーヤーまたはグループの ID。
- Long (2)
- アプリケーションに固有のデータを含むバッファへのポインタと、そのサイズ。このバッファの中身を取得するには、DirectPlayMessage.ReadSysMsgData メソッドを使用する。
- DPSYS_SETPLAYERORGROUPNAME
- DirectPlay は、プレーヤーまたはグループの名前が変更されたときに、このメッセージを生成し、コンピュータ上の各ローカル プレーヤーに送信する。セッション記述で DPSESSION_NODATAMESSAGES フラグが設定されている場合は、このメッセージは生成されない。
- Long
- メッセージがプレーヤー (DPPLAYERTYPE_PLAYER) またはグループ (DPPLAYERTYPE_GROUP) のどちらに適用されるのかを示す。
- Long
- 名前が変更されたプレーヤーまたはグループの ID。
- Long
- 基になる名前構造体のサイズ。無視できる。
- Long
- フラグ。常に 0。
- String
- プレーヤーまたはグループの新しいショート ネーム。
- String
- プレーヤーまたはグループの新しいロング ネーム。
- DPSYS_SETSESSIONDESC
- すべてのプレーヤーは、セッション記述が変更されたときに、このメッセージを受信する。新しいセッション記述を取得するには、DirectPlayMessage.ReadSysMsgSessionDesc メソッドを使用する。
- DPSYS_STARTSESSION
- ロビー サーバーは、グループ内の各プレーヤーがアプリケーション セッションに参加するときに、それらのプレーヤーにこのメッセージを送信する。接続データを取得するには、DirectPlayMessage.ReadSysMsgConnection メソッドを使用する。