Platform SDK: DirectX

DPSESSIONDESC2

DPSESSIONDESC2 構造体は、セッションの能力の記述を保持する。

ただし、セッション記述フラグの一部は読み取り専用であり、変更できない。また、残りのフラグはホストしか変更できないので注意すること。dwFlags メンバの説明を参照すること。

typedef struct {
    DWORD dwSize;
    DWORD dwFlags;
    GUID  guidInstance;
    GUID  guidApplication;
    DWORD dwMaxPlayers;
    DWORD dwCurrentPlayers;
    union  {
        LPWSTR lpszSessionName;
        LPSTR  lpszSessionNameA;
    };
    union  {
        LPWSTR lpszPassword;
        LPSTR  lpszPasswordA;
    };
    DWORD dwReserved1;
    DWORD dwReserved2;
    DWORD dwUser1;
    DWORD dwUser2;
    DWORD dwUser3;
    DWORD dwUser4;
} DPSESSIONDESC2, FAR *LPDPSESSIONDESC2;

メンバ

dwSize
DPSESSIONDESC2 構造体のサイズ。アプリケーションは、この構造体を使用する前に、まずこのメンバを設定する必要がある。
dwFlags
DPSESSION_CLIENTSERVER、DPSESSION_DIRECTPLAYPROTOCOL、DPSESSION_KEEPALIVE、DPSESSION_MIGRATEHOST、DPSESSION_MULTICASTSERVER、DPSESSION_NOMESSAGEID、DPSESSION_OPTIMIZELATENCY、および DPSESSION_SECURESERVER のフラグの組み合わせ。セッションが起動されている場合、これらのフラグは変更できない。その他のフラグの DPSESSION_JOINDISABLED、DPSESSION_NEWPLAYERSDISABLED、DPSESSION_NODATAMESSAGES、DPSESSION_NOPRESERVEORDER、DPSESSION_PASSWORDREQUIRED、および DPSESSION_PRIVATE は、IDirectPlay4::SetSessionDesc によりセッションが起動された後でも変更できるが、変更できるのはホストだけである。
DPSESSION_CLIENTSERVER
これが、アプリケーション サーバー プロセスがホストのクライアント/サーバー セッションであると指定する。このフラグは、セッションが作成されたときに指定する必要がある。このセッションに参加したクライアントは、そのサーバー プレーヤーとローカル プレーヤーを列挙することしかできない。セッションのホストでは、すべてのプレーヤーが列挙される。このフラグが設定されていない場合、セッションはピアツーピア セッションである。このフラグが設定されている場合、サーバー プレーヤーを作成できるのはホストだけである。このフラグは、DPSESSION_MIGRATEHOST では使用できない。
DPSESSION_DIRECTPLAYPROTOCOL
このセッションではサービス プロバイダにより実装されるプロトコルではなく、DirectPlay の保証付きプロトコルを使用するように指定する。メッセージ スロットリングによりパフォーマンスを向上させたい場合、または IDirectPlay4::SendEx のすべての機能を使用できるようにしたい場合に、このフラグを使用する。このフラグを設定すると、信頼性の低いプロバイダでの保証付き送信も可能になる。また、このフラグにより、TCP/IP 上で DirectPlay の信頼性の高いコードを使用することが可能になる。これにより、一般にスループットと配信の両方の面でパフォーマンスが向上する。
DPSESSION_JOINDISABLED
新しいアプリケーションがこのセッションに参加できないように指定する。IDirectPlay4::Open メソッドで DPOPEN_JOIN フラグを設定して呼び出したり、またこのセッションのインスタンスのグローバル ユニーク識別子 (GUID) により、エラーが発生する。このフラグが指定されていない場合、新しいリモート アプリケーションはセッション プレーヤーの制限に達するまでセッションに参加できる。
DPSESSION_KEEPALIVE
リモート プレーヤーがゲームを異常に退出すると、このセッションがそれを自動的に検出するように指定する。そのプレーヤーは、セッションから削除される。一時的なネットワークの容量不足によりプレーヤーを喪失した場合、そのプレーヤーには戻ったときに、セッションから退出させられたことが DPMSG_SESSIONLOST システム メッセージにより知らされる。このフラグは、セッションが作成されたときに指定する必要がある。このフラグが指定されていない場合、プレーヤーが異常終了すると DirectPlay によりそのセッションが自動的に維持されない。
DPSESSION_MIGRATEHOST
カレント ホストが存在する場合にセッション内の別のコンピュータがホストになるように指定する。新しいホスト コンピュータのプレーヤーは、DPMSG_HOST システム メッセージを受け取る。このフラグは、セッションが作成されたときに指定する必要がある。このフラグが設定されていない場合、ホストは移行せず、新しいコンピュータはセッションに参加できない。また、カレント ホストが退出すると新しいプレーヤーを作成できない。DPSESSION_MIGRATEHOST フラグは、DPSESSION_CLIENTSERVER フラグ、DPSESSION_MULTICASTSERVER フラグ、または DPSESSION_SECURESERVER フラグと一緒に使用できないので注意すること。
DPSESSION_MULTICASTSERVER
ピアツーピア セッションでブロードキャスト メッセージやグループ メッセージが、マルチキャスト サーバーのように機能するホストからルーティングされるように指定する。このフラグは、セッションが作成されたときに指定する必要がある。このフラグは、ホストがネットワークへ高帯域幅で接続されている場合にのみ有用である。このフラグが指定されていない場合、ブロードキャスト メッセージやグループ メッセージはピア間で直接送信される。このフラグは、DPSESSION_MIGRATEHOST で使用できない。
DPSESSION_NEWPLAYERSDISABLED
新しいプレーヤーをセッション内で作成できないように指定する。セッション内のアプリケーションが IDirectPlay4::CreatePlayer メソッドを呼び出すと、エラーが発生する。また、新しいアプリケーションはセッションに参加できない。このフラグが指定されていない場合、プレーヤーは、セッション プレーヤーの制限に達するまで作成できる。
DPSESSION_NODATAMESSAGES
IDirectPlay4::SetPlayerDataIDirectPlay4::SetGroupDataIDirectPlay4::SetPlayerNameIDirectPlay4::SetGroupName、または IDirectPlay4::SetSessionDesc メソッドにより、リモート プレーヤー データ、グループ データ、またはセッション データを変更したときに、セッションでシステム メッセージを送信しないように指定する。フラグが指定されていない場合、データが変更されたことを示すメッセージが生成される。

ただし、このフラグを設定すると DPMSG_SETSESSIONDESC メッセージも抑制される。

DPSESSION_NOMESSAGEID
セッションで、メッセージの送信元や送信先のプレーヤーを示すメッセージをデータに添付しないように指定する。このフラグを設定すると、この情報が関係ない場合、メッセージのオーバヘッドが抑えられる (詳細については、IDirectPlay4::Receive メソッドを参照すること)。このフラグが指定されていない場合、メッセージ ID が追加される。このフラグは、セッションが作成されたときに指定する必要がある。
DPSESSION_NOPRESERVEORDER
セッションで保証付きメッセージの受信順序を保持しないように指定する。デフォルトでは、保証付きメッセージの受信順序が保持される。この順序が必要ない場合、このフラグを使用すると、配信時の遅延をなくすことができる。
DPSESSION_OPTIMIZELATENCY
サービス プロバイダ遅延時間について最適化を行うように要求する (TCP/IP でナグリング機能をオフにする)。デフォルトでは、帯域幅について最適化が行われる。
DPSESSION_PASSWORDREQUIRED
このセッションがパスワードにより保護されるように指定する。セッションに参加したいアプリケーションは、IDirectPlay4::Open 呼び出しでパスワードを指定する必要がある。これは、読み取り専用フラグである。セッションのホストで NULL 以外のパスワードが指定されると、これは DirectPlay により自動的に設定される。
DPSESSION_PRIVATE
これがプライベート セッションであると指定する。これは、要求に NULL 以外の一致するパスワードが含まれていない限り、列挙要求に応答できない。このフラグが指定されていない場合、セッションは列挙要求に応答する。
DPSESSION_SECURESERVER
セッションが、開く前に認証証明書を要求する保証サーバーをホストとするように指定する。ホストは、セッションが作成されるときにこのフラグを指定する必要がある。IDirectPlay4::SetSessionDesc を使用しても後で変更することはできない。このフラグは、DPSESSION_MIGRATEHOST フラグでは使用でない。
guidInstance
セッション インスタンスの GUID。
guidApplication
セッション インスタンスで実行されているアプリケーションの GUID。これは、DirectPlay が同じアプリケーションを実行しているその他のコンピュータにのみ接続されるように、アプリケーションを一意に識別する。このメンバに GUID_NULL を設定すれば、任意のアプリケーションのセッションを列挙できる。
dwMaxPlayers
このセッションで許可されているプレーヤーの最大数。この値が 0 のときは、最大数が指定されていないことを意味する。
dwCurrentPlayers
セッション内の現在のプレーヤー数。
lpszSessionName
セッションの名前が格納されている Unicode 文字列へのポインタ。Unicode DirectPlay インターフェイス (IDirectPlay4 インターフェイス) が使用されている場合にのみ使用する。
lpszSessionNameA
セッションの名前が格納されている ANSI 文字列へのポインタ。ANSI DirectPlay インターフェイス (IDirectPlay4A) が使用されている場合にのみ使用する。
lpszPassword
参加するためにセッションに参加するときに使用されるパスワードが格納されている Unicode 文字列へのポインタ。Unicode DirectPlay インターフェイス (IDirectPlay4 インターフェイス) が使用されている場合にのみ使用する。
lpszPasswordA
セッションに参加するときに使用されるパスワードが格納されている ANSI 文字列へのポインタ。ANSI DirectPlay インターフェイス (IDirectPlay4A) が使用されている場合にのみ使用する。
dwReserved1 および dwReserved2
0 でなければならない。
dwUser1dwUser2dwUser3、および dwUser4
セッションのアプリケーション固有のデータ。

必要条件

  Windows NT/2000 : Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dplay.h で宣言。

参照

IDirectPlay4::EnumSessionsIDirectPlay4::GetSessionDescIDirectPlay4::OpenIDirectPlay4::SecureOpenIDirectPlay4::SetSessionDescIDirectPlay4::CreatePlayer