Microsoft DirectX 8.0 (C++)

IDirectPlayVoiceClient::Connect

クライアントを Microsoft® DirectPlay® Voice セッションに接続する。

HRESULT Connect(
PDVSOUNDDEVICECONFIG pSoundDeviceConfig,
PDVCLIENTCONFIG pdvClientConfig,
DWORD dwFlags
);

パラメータ

pSoundDeviceConfig
サウンド デバイス構成を記述する DVSOUNDDEVICECONFIG 構造体へのポインタ。
pdvClientConfig
クライアントの一般的構成を記述する DVCLIENTCONFIG 構造体へのポインタ。
dwFlags
フラグ。次のフラグを指定できる。
DVFLAGS_SYNC
処理が完了するまでメソッドは戻らない。

戻り値

メソッドが同期をとりながら処理され、処理が成功した場合は、DV_OK を返す。デフォルトでは、このメソッドは非同期に実行され、DVERR_PENDING を返す。エラーの場合は、次のいずれかの値を返す。

DVERR_ALREADYPENDING
DVERR_COMPRESSIONNOTSUPPORTED
DVERR_INCOMPATIBLEVERSION
DVERR_INVALIDBUFFER
DVERR_INVALIDDEVICE
DVERR_INVALIDFLAGS
DVERR_INVALIDOBJECT
DVERR_INVALIDPARAM
DVERR_INVALIDPOINTER
DVERR_NOTINITIALIZED
DVERR_OUTOFMEMORY
DVERR_RUNSETUP
DVERR_SENDERROR
DVERR_SOUNDINITFAILURE
DVERR_TIMEOUT
DVERR_TRANSPORTNOPLAYER
DVERR_TRANSPORTNOSESSION
DVERR_CONNECTED
DVERR_NOVOICESESSION

注意

DirectPlay Voice セッションにクライアントを接続する前にセットアップ ウィザードを呼び出し、再生とキャプチャ用に選択したサウンド デバイスをテストする必要がある。アプリケーションの起動時には、IDirectPlayVoiceTest::CheckAudioSetup を使用してオーディオ構成を確認する。このメソッドが DVERR_RUNSETUP を返す場合、指定されたサウンド構成はテストされていない。セットアップ ウィザードは構成ごとに 1 回だけ実行する必要がある。

バッファの形式が正しくない場合、メソッドは DVERR_INVALIDBUFFER を返す。

DirectPlay Voice がバッファに書き込もうとしたときにバッファまたはバッファの一部がロックされている場合、メソッドは DVERR_INVALIDBUFFER を返し、DirectPlay Voice はセッションから接続解除される。また、DVMSGID_SESSIONLOST メッセージを受け取る。関連付けられている構造体の hResult メンバは DVERR_LOCKEDBUFFER に設定される。この後のメソッドの呼び出しは、DVERR_NOTCONNECTED エラー コードを返す。

全二重処理がサポートされていない場合、DirectPlay Voice は半二重 (聴取専用) モードに戻る。半二重モードかどうかを調べるには、接続を完了した後で、IDirectPlayVoiceClient::GetSoundDeviceConfig を呼び出す。半二重モードの場合、DVSOUNDDEVICECONFIG 構造体の dwFlags メンバに DVSOUNDCONFIG_HALFDUPLEX フラグが設定されている。

インターフェイスの取得方法とは関係なく、DirectPlayVoiceClient オブジェクトでは、IDirectPlayVoiceClient::Disconnect が呼び出されるまで、AddRef により、使用する IDirectSound インターフェイスと IdirectSoundCapture インターフェイスへの参照が維持される。Disconnect が呼び出されると、DirectPlayVoiceClient オブジェクトは両インターフェイスに対して Release を呼び出す。

DVFLAGS_SYNC フラグを設定して、同期をとってこのメソッドを呼び出した場合、メッセージ ハンドラに DVMSG_CONNECTRESULT メッセージは送信されない。この場合、接続結果はこのメソッドの戻り値によって決まる。

このメソッドが非同期に呼び出された場合 (デフォルト)、メソッド呼び出し直後に DVERR_PENDING エラー値が返され、バッググラウンドで接続要求が処理される。DirectPlay Voice クライアントが接続結果を含んだ DVMSG_CONNECTRESULT メッセージを生成するまで、接続の状態は不明である。

接続がペンディング状態になっている間に IDirectPlayVoiceClient::Connect を呼び出すと、DVERR_ALREADYPENDING が返される。また、1 度に 1 つの接続のみをペンディング状態にできる。

このメソッドを呼び出す前に、特定の DirectPlay オブジェクトに対してトランスポート セッションを開始している必要がある。IDirectPlayVoiceClient::Initialize の呼び出しが成功した後に Connect メソッドを呼び出す必要がある。

動作環境

  Windows NT/2000 : Windows 2000 以降に対する再配布可能ファイルとして提供。
  Windows 95/98 : Windows 95 以降に対する再配布可能ファイルとして提供。
  ヘッダー : Dvoice.h で宣言。