Platform SDK: DirectX

IDirectPlay4::Open

IDirectPlay4::Open メソッドは、IDirectPlay4::EnumSessions メソッドの呼び出しで列挙したセッションに参加したり、別のユーザーが列挙および参加できる新しいセッションを作成するときに使用される。

HRESULT Open(
  LPDPSESSIONDESC2 lpsd,
  DWORD dwFlags
);

パラメータ

lpsd
作成または参加するセッションを記述した DPSESSIONDESC2 構造体へのポインタ。セッションに参加する場合は、dwSizeguidInstancelpszPassword データ メンバのみを指定すればよい。列挙したセッションで DPSESSION_PASSWORD フラグが設定されている場合は、パスワードのみを指定すればよい。

セッションを作成する場合、アプリケーションで、作成するセッションのプロパティを使用して DPSESSIONDESC2 構造体をすべて設定する必要がある。guidInstance は、DirectPlay により作成される。

dwFlags
次のフラグのいずれかを 1 つだけ設定する。
DPOPEN_CREATE
アプリケーション セッションの新しいインスタンスを作成する。ローカル コンピュータが、セッションのネーム サーバー兼ホストになる。
DPOPEN_JOIN
アプリケーション セッションの既存のインスタンスに参加する。アプリケーションはプレーヤーを作成して、メッセージを送受信できる。
DPOPEN_RETURNSTATUS
このフラグを指定した場合は、接続の進行状況を示すダイアログ ボックスが表示されない。すぐに接続できない場合、メソッドは DPERR_CONNECTING エラーを返す。アプリケーションは、正常終了を示す DP_OK が返されるか、またはエラーを示すそのほかのエラー コードが返されるまで Open を呼び出し続ける必要がある。

戻り値

成功した場合は DP_OK を返す。失敗した場合は、次のエラー値のいずれかを返す。

DPERR_ACCESSDENIED
DPERR_ALREADYINITIALIZED
DPERR_AUTHENTICATIONFAILED
DPERR_CANNOTCREATESERVER
DPERR_CANTCREATEPLAYER
DPERR_CANTLOADCAPI
DPERR_CANTLOADSECURITYPACKAGE
DPERR_CANTLOADSSPI
DPERR_CONNECTING
DPERR_CONNECTIONLOST
DPERR_ENCRYPTIONFAILED
DPERR_ENCRYPTIONNOTSUPPORTED
DPERR_INVALIDFLAGS
DPERR_INVALIDPARAMS
DPERR_INVALIDPASSWORD
DPERR_LOGONDENIED
DPERR_NOCONNECTION
DPERR_NONEWPLAYERS
DPERR_NOSESSIONS
DPERR_SIGNFAILED
DPERR_TIMEOUT
DPERR_UNINITIALIZED
DPERR_USERCANCEL

この 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 を使用。

参照

DPSESSIONDESC2IDirectPlay4::CloseIDirectPlay4::SecureOpenIDirectPlay4::EnumSessions