Platform SDK: DirectX |
IDirectPlay4::Open メソッドは、IDirectPlay4::EnumSessions メソッドの呼び出しで列挙したセッションに参加したり、別のユーザーが列挙および参加できる新しいセッションを作成するときに使用される。
HRESULT Open( LPDPSESSIONDESC2 lpsd, DWORD dwFlags );
セッションを作成する場合、アプリケーションで、作成するセッションのプロパティを使用して DPSESSIONDESC2 構造体をすべて設定する必要がある。guidInstance は、DirectPlay により作成される。
成功した場合は DP_OK を返す。失敗した場合は、次のエラー値のいずれかを返す。
この DirectPlay オブジェクトでセッションが既に開かれている場合は、DPERR_ALREADYINITIALIZED を返す。
セッション記述の最大プレーヤー数に既に達している場合は、DPERR_CANTCREATEPLAYER を返す。
セッションから Open 要求へ応答が返されなかった場合は、DPERR_TIMEOUT を返す。
ユーザーが列挙要求を取り消した場合 (一般に、サービス プロバイダのダイアログボックスを取り消すことにより) は、DPERR_USERCANCEL を返す。
既存のセッションに参加するために呼び出されたが、セッションが内部セッション リストになかった場合 (またはセッションの guidInstance が破損していた場合) は、DPERR_NOSESSIONS を返す。
アプリケーションがセッションに参加すると、プレーヤーを作成して、セッション内の別のプレーヤーと通信を開始することができる。ただし、IDirectPlay4::CreatePlayer メソッドを使用してローカル プレーヤーを作成するまでは、この DirectPlay オブジェクトでメッセージは受信されず、またメッセージを送信することはできない。
アプリケーションで同時に 2 つのセッションを開くには、DirectPlay オブジェクトを 2 つ作成して、それぞれに 1 つずつセッションを開く必要がある。
セッションに参加するには、DPSESSIONDESC2 構造体の dwSize メンバと guidInstance メンバを指定するだけでよい。セッションがパスワード保護とマークされていれば、lpszPassword メンバも指定する必要がある。列挙されたセッションでパスワードが必要な場合は、そのセッションに DPSESSION_PASSWORDREQUIRED フラグが設定される。
セキュア セッションに参加する場合は、SecureOpen を使用してログオン証明書を指定する必要がある。列挙されたセッションで証明書が必要な場合は、そのセッションに DPSESSION_SECURESERVER フラグが設定される。
DPSESSIONDESC2 構造体の DPSESSION_SECURESERVER フラグを指定すると、セッションはデフォルトのセキュリティ パッケージの NTLM(NT LAN Manager) で開かれる。別のセキュリティ パッケージを指定するには、SecureOpen を使用する。
アプリケーションでセッションに参加する場合、サーバーは Open 要求を拒否したり、それを無視することができる (Open が時間切れの場合)。新規プレーヤーが無効なセッション、参加が無効なセッション、プレーヤーの制限に達しているセッション、または不正なパスワードが指定されたセッションに参加しようとすると、DPERR_NONEWPLAYERS エラーまたは DPERR_INVALIDPASSWORD エラーが発生する。
Windows NT/2000 : Windows 2000 が必要。
Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
ヘッダー : dplay.h で宣言。
インポート ライブラリ : dplayx.lib を使用。
DPSESSIONDESC2、IDirectPlay4::Close、IDirectPlay4::SecureOpen、IDirectPlay4::EnumSessions