Share via


DVSOUNDDEVICECONFIG 構造体

DVSOUNDDEVICECONFIG 構造体

サウンド デバイス構成に関する情報の設定と取得に使う。一度接続が確立すると、値は変更できない。接続の確立後、IDirectPlayVoiceClient::GetSoundDeviceConfig を呼び出すと、現在のサウンド デバイス構成を取得できる。

構文

typedef struct {
    DWORD dwSize;
    DWORD dwFlags;
    GUID guidPlaybackDevice;
    LPDIRECTSOUND lpdsPlaybackDevice;
    GUID guidCaptureDevice;
    LPDIRECTSOUNDCAPTURE lpdsCaptureDevice;
    HWND hwndAppWindow;
    LPDIRECTSOUNDBUFFER lpdsMainBuffer;
    DWORD dwMainBufferFlags;
    DWORD dwMainBufferPriority;
} DVSOUNDDEVICECONFIG, *LPDVSOUNDDEVICECONFIG, *PDVSOUNDDEVICECONFIG;

メンバ

  • dwSize
    この構造体を使う前に、この構造体のサイズ (バイト単位) に設定する必要がある。

  • dwFlags
    次のフラグを組み合わせて指定する。

    • DVSOUNDCONFIG_AUTOSELECT
      このフラグを指定すると、Microsoft® DirectPlay® Voice は、指定された録音デバイスのミキサでマイク ラインを自動的に選択 (またはミュート解除) しようとする。
    • DVSOUNDCONFIG_HALFDUPLEX
      DirectPlay Voice を半二重モードで初期化する。半二重モードでは録音は行われない。全二重モードでサウンド システムの初期化が失敗した場合、システムによってこのフラグが設定される。
    • DVSOUNDCONFIG_NORMALMODE
      DirectPlay Voice は Microsoft DirectSound® の通常モードを使って DirectSound オブジェクトを初期化する。このフラグを指定しない場合、DirectSound オブジェクトは DirectSound の優先モードで初期化される。詳細については、IDirectSound8::SetCooperativeLevel の説明を参照すること。lpdsPlaybackDevice メンバに有効な DirectSound オブジェクトが指定された場合、このフラグは無視される。
    • DVSOUNDCONFIG_SETCONVERSIONQUALITY
      CPU の使用量が増加する代わりに、高品質のオーディオを使える。
    • DVSOUNDCONFIG_NORECVOLAVAILABLE
      指定した録音デバイスでボリュームが制御できない場合、DirectPlay Voice によって設定される。開発者はこのフラグを設定できない。
    • DVSOUNDCONFIG_NOFOCUS
      音声アプリケーションは決してフォーカスを失わない。言い換えると、アプリケーションは決してサウンド キャプチャ デバイスを解放しない。このフラグの使用はお勧めしない。
    • DVSOUNDCONFIG_STRICTFOCUS
      音声アプリケーションのウィンドウがフォアグラウンド ウィンドウでなくなると、音声アプリケーションはフォーカスを失う。
  • guidPlaybackDevice
    IDirectPlayVoiceClient::GetSoundDeviceConfig メソッドでこの構造体を使った場合、再生に使う実際のデバイス グローバル一意識別子 (GUID) がこのメンバに含まれる。

    IDirectPlayVoiceClient::Connect メソッドでこの構造体を使う場合、再生に使うデバイスの GUID をこのメンバに指定する。lpdsPlaybackDevice メンバを使う場合でも、この値を指定する必要がある。また、DirectSound が提供する次のデフォルト GUID を使うこともできる。

    • DSDEVID_DefaultPlayback
      システムのデフォルト再生デバイス。
    • DSDEVID_DefaultVoicePlayback
      デフォルト音声再生デバイス。
  • lpdsPlaybackDevice
    IDirectPlayVoiceClient::Connect メソッドでこの構造体を使う場合、このメンバは DirectPlay Voice で再生に使う DirectSound オブジェクトを指定する。guidPlaybackDevice に指定する GUID は、このパラメータで指定したデバイスの作成に使われる GUID に一致する必要がある。DirectSound オブジェクトの作成時にデバイス指定で NULL を使った場合、このメンバに DSDEVID_DefaultPlayback を指定する。

    IDirectPlayVoiceClient::GetSoundDeviceConfig メソッドでこの構造体を使った場合、DirectPlay Voice で使われる DirectSound オブジェクトへのポインタがこのメンバに含まれる。このポインタは、Connect を呼び出すときに指定したオブジェクトへのポインタであるか、または新しく作成され、初期化された DirectSound オブジェクトへのポインタである。この DirectSound オブジェクトを使う場合は、ポインタを格納し、DirectSound インターフェイスで AddRef を呼び出して参照カウントをインクリメントする必要がある。

  • guidCaptureDevice
    IDirectPlayVoiceClient::Connect メソッドでこの構造体を使う場合、このメンバはキャプチャに使うデバイスの GUID を指定する。lpdsCaptureDevice メンバを使う場合でも、この値を指定する必要がある。DirectSoundCapture オブジェクトの作成時にデバイス指定で NULL を使った場合、このメンバに DSDEVID_DefaultCapture を指定する。

    IDirectPlayVoiceClient::GetSoundDeviceConfig メソッドでこの構造体を使う場合、このメンバには、キャプチャに使う実際のデバイスの GUID が含まれる。

  • lpdsCaptureDevice
    IDirectPlayVoiceClient::Connect メソッドでこの構造体を使う場合、このメンバは、DirectPlay Voice がキャプチャに使う DirectSound オブジェクトを指定する。guidCaptureDevice に指定する GUID は、このパラメータで指定したデバイスの作成に使われる GUID に一致する必要がある。DirectPlay Voice で自動的に DirectSoundCapture オブジェクトを作成する場合は、このパラメータに NULL を指定する。

    IDirectPlayVoiceClient::GetSoundDeviceConfig メソッドでこの構造体を使った場合、このメンバには、DirectPlay Voice で使われる DirectSoundCapture オブジェクトへのポインタが含まれる。このポインタは、Connect を呼び出したときに指定したオブジェクトへのポインタであるか、または新しく作成され、初期化された DirectSoundCapture オブジェクトへのポインタである。この DirectSoundCapture オブジェクトを使う場合は、ポインタを格納し、IDirectSoundCapture8 インターフェイスで AddRef を呼び出して参照カウントをインクリメントする必要がある。DirectPlay Voice オブジェクトが半二重モードで動作している場合、このメンバは NULL になる。

  • hwndAppWindow
    サウンド再生のフォーカスの決定に使われるウィンドウのハンドルに設定する必要がある。DirectSound のフォーカスの詳細については、IDirectSound8::SetCooperativeLevel の説明を参照すること。フォーカスに使うウィンドウがない場合、GetDesktopWindowHandle によりデスクトップ ウィンドウを使う。

  • lpdsMainBuffer
    IDirectSoundBuffer8 インターフェイスへのポインタ。 このインターフェイスを使って、DirectPlay Voice のメイン バッファを作成する。NULL、またはユーザー作成の DirectSound バッファを指定できる。このメンバを NULL に設定すると、DirectPlay Voice はメイン音声バッファとして使うバッファを作成する。ここでバッファを指定した場合、DirectPlay Voice はこのバッファをメインの音声バッファとして使う。ユーザー作成のバッファには次の制限がある。

    • バッファは、22 Khz、16 ビット、モノラル フォーマットでなければならない。
    • バッファの長さは 1 秒以上でなければならない。
    • バッファは、DSBCAPS_GETCURRENTPOSITION2 および DSBCAPS_CTRL3D フラグを使って作成されていなければならない。
    • バッファは、プライマリ バッファであってはならない。
    • バッファは、DirectPlay Voice ソフトウェアに渡されるときに再生中であってはならない。
    • バッファは、DirectPlay Voice ソフトウェアに渡されるときにロックされていてはならない。
  • dwMainBufferFlags
    メイン バッファに対して Play を呼び出すときは、IDirectSoundBuffer8::Play メソッドの dwFlags パラメータにこのメンバが直接渡される。このフィールドには、DSBPLAY_LOOPING フラグが自動的に追加される。詳細については、IDirectSoundBuffer8::Play の説明を参照すること。この構造体の lpdsMainBuffer メンバが NULL である場合、このパラメータは 0 に設定する必要がある。

  • dwMainBufferPriority
    メイン バッファに対して Play を呼び出すときは、IDirectSoundBuffer8::Play メソッドの dwPriority パラメータにこのメンバが直接渡される。詳細については、IDirectSoundBuffer8::Play の説明を参照すること。lpdsMainBufferDesc が NULL である場合、このメンバは 0 に設定する必要がある。

注意

  アプリケーションでは、どうしても必要な場合にのみ、DVSOUNDCONFIG_NOFOCUS または DVSOUNDCONFIG_STRICTFOCUS フラグを設定すること。通常は、いずれのフラグも設定しないデフォルトの動作を使う。

構造体の情報

ヘッダー dvoice8.h
最低限のオペレーティング システム Windows 98