Platform SDK: DirectX

IDirectPlay4::SecureOpen

IDirectPlay4::SecureOpen メソッドは、セキュア セッションを作成したり、そのセッションに参加したりする。セキュア セッションに参加するとき、このメソッドを使用してログオン証明書を指定する。

新しいセッションを作成するとき、ホスト コンピュータは使用する代替セキュリティ パッケージを指定できる。セッションに参加するときは、ユーザー名とパスワードを指定できる。

HRESULT SecureOpen(
  LPCDPSESSIONDESC2 lpsd,
  DWORD dwFlags,
  LPCDPSECURITYDESC lpSecurity,
  LPCDPCREDENTIALS lpCredentials
);

パラメータ

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

セッションを作成する場合は、アプリケーションで、作成するセッションのプロパティを使用して DPSESSIONDESC2 構造体をすべて設定する必要がある。guidInstance は、DirectPlay により作成される。ただし、セッションを開こうとするコンピュータはすべて認証されていなければならないことを示すために、DPSESSION_SECURESERVER フラグを設定する必要がある。

DPSESSIONDESC2 構造体を設定する場合に DPSESSION_SECURESERVER フラグを指定しなければ、SecureOpenOpen が呼び出されたときと同じように非セキュア セッションを開く。

dwFlags
次のフラグのいずれかを指定する。
DPOPEN_CREATE
セキュア セッションの新しいインスタンスを作成する。
DPOPEN_JOIN
セキュア セッションの既存のインスタンスに参加する。
DPOPEN_RETURNSTATUS
このフラグを指定した場合は、接続の進行状況を示すダイアログ ボックスが表示されない。すぐに接続できない場合、メソッドは DPERR_CONNECTING エラーを返す。アプリケーションは、正常終了を示す DP_OK が返されるか、またはエラーを示すそのほかのエラー コードが返されるまで SecureOpen を呼び出し続ける必要がある。
lpSecurity
使用するセキュリティ パッケージが格納されている DPSECURITYDESC 構造体へのポインタ。デフォルトのセキュリティ パッケージ (NT LAN Manager) や CryptoAPI パッケージ (Microsoft RSA Base Cryptographic Provider) を使用するときは、このパラメータに NULL を設定する。これは、セッションを作成する場合にのみ関係がある。セッションに参加するときは NULL を設定しなければならない。
lpCredentials
サーバーで認証するログオン名、パスワード、ドメインが格納されている DPCREDENTIALS 構造体へのポインタ。証明書がない場合は、NULL を指定する。セッションを作成するとき、証明書は無視される。

戻り値

成功すれば DP_OK、失敗すれば次のエラー値のいずれかを返す。

DPERR_ACCESSDENIED
DPERR_ALREADYINITIALIZED
DPERR_AUTHENTICATIONFAILED
DPERR_CANNOTCREATESERVER
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_SIGNFAILED
DPERR_TIMEOUT
DPERR_UNINITIALIZED
DPERR_USERCANCEL

無効な証明書を使用して呼び出された場合、または証明書が必要なのにそれを指定しないで呼び出された場合は、DPERR_LOGONDENIED を返す。アプリケーションはユーザーの証明書を収集して、SecureOpen を再度呼び出す必要がある。

注意

セッションに参加する場合、最初に証明書を指定しないで SecureOpen を呼び出す。メソッドから DPERR_LOGONDENIED が返されたら、ユーザーにユーザー名とパスワードを入力してもらって、ユーザーの証明書を lpCredentials パラメータに指定して SecureOpen を再度呼び出す必要がある。メソッドから DP_OK が返された場合、プレーヤーは前にシステム ログオン (NTLM でのネットワーク ログオン) 時に指定した証明書を使用してログオンできる。

必要条件

  Windows NT/2000 : Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dplay.h で宣言。
  インポート ライブラリ : dplayx.lib を使用。

参照

IDirectPlay4::Open