Platform SDK: DirectX

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 メソッドを使用する。