Platform SDK: DirectX |
DirectPlay4.Open メソッドは、DirectPlay4.GetDPEnumSessions メソッドを呼び出して列挙されたセッションに参加するとき、またはユーザーが列挙および参加可能な新しいセッションを作成するときに使用する。
object.Open(sessionDesc As DirectPlaySessionData, _ flags As CONST_DPOPENFLAGS)
セッションを作成する場合は、作成するセッションのプロパティ (DirectPlay によって提供される GuidInstance を除く) を使用して、DirectPlaySessionData オブジェクトを完全に初期化する必要がある。
失敗すればエラーが発生し、Err.Number に次のいずれかの値が設定される。
このメソッドは、この DirectPlay オブジェクト上に既に開いたセッションが存在する場合は、DPERR_ALREADYINITIALIZED を返す。
セッション記述の最大プレーヤー数に既に達している場合は、DPERR_CANTCREATEPLAYER を返す。
セッションが Open 要求に応答しなかった場合は、DPERR_TIMEOUT を返す。
ユーザーが列挙処理をキャンセルした場合 (通常は、サービス プロバイダのダイアログ ボックスをキャンセルすることにより、列挙処理をキャンセルする) は、DPERR_USERCANCEL を返す。
記述に一致するオープン セッションが存在しない場合、セッションが内部セッション リストに存在しない場合、またはセッション GUID が不正な場合は、DPERR_NOSESSIONS を返す。
アプリケーションがセッションに参加すると、プレーヤーを作成し、セッション内のほかのプレーヤーとの通信を開始することができる。アプリケーションは、DirectPlay4.CreatePlayer を使用してローカル プレーヤーを作成するまでは、この DirectPlay オブジェクト上でメッセージを受信することも、メッセージを送信することもできない。
2 つのセッションを同時に開いておくには、2 つの DirectPlay オブジェクトを作成し、それぞれでセッションを開く必要がある。
セッションをパスワードで保護する場合は、DirectPlaySessionData.SetSessionPassword を呼び出す必要がある。セッションを列挙すると、パスワードを要求するセッションには、DPSESSION_PASSWORDREQUIRED フラグが設定される。
保証セッションに参加する場合は、DirectPlay4.SecureOpen を使用して、ログオン用の信用情報を提供する必要がある。セッションを列挙すると、信用情報を要求するセッションには、DPSESSION_SECURESERVER フラグが設定される。
DPSESSION_SECURESERVER フラグを設定すると、セッションはデフォルトのセキュリティ パッケージである NTLM を使用して開かれる。別のセキュリティ パッケージを指定するには、SecureOpen を使用する。
アプリケーションがセッションに参加しようとするとき、サーバーは Open 要求を拒否するか、または無視する (この場合、Open はタイムアウトになる) ことができる。新しいプレーヤーが無効になっていたり、参加が無効になっていたり、プレーヤーの限度に達していたり、間違ったパスワードが提供されていたりするセッションに参加しようとすると、DPERR_NONEWPLAYERS エラーまたは DPERR_INVALIDPASSWORD エラーが返される。