次の方法で共有


デバイスの能力

DirectSound を使うと、アプリケーションはサウンド デバイスのハードウェア能力を調べることができる。DirectSound は利用可能なハードウェア アクセラレーションを自動的に利用するので、アプリケーションでは、通常この調査を行う必要はない。しかし、高性能のアプリケーションでは、この情報を使うことで、利用可能なハードウェアに合わせてサウンドの要件を調節できる。たとえば、ハードウェア ミキシングが利用可能な場合は、利用不可能な場合に比べて、アプリケーションがより多くのサウンドを再生できるはずである。

DirectSoundCreate8 関数を呼び出してデバイス オブジェクトを作成したなら、IDirectSound8::GetCaps メソッドを使ってサウンド デバイスの能力を取得できる。

次の例では、IDirectSound8 インターフェイス ポインタ lpDirectSound によって表されるデバイスの能力を取得している。

DSCAPS dscaps; 
 
dscaps.dwSize = sizeof(DSCAPS); 
HRESULT hr = lpDirectSound->GetCaps(&dscaps); 
if (FAILED(hr))
{
  ErrorHandler(hr);  // エラー処理をここに追加する。
}

DSCAPS 構造体は、サウンド デバイスの能力とリソースに関する情報を受け取るが、この中にはタイプごとの最大のリソースと現在利用可能なリソースが含まれる。このメソッドを呼び出す前に、この構造体の dwSize メンバを初期化しなければならない点に注意すること。

アプリケーションがハードウェア能力に合わせる場合は、バッファ割り当てを行うたびに IDirectSound8::GetCaps メソッドを呼び出して、次のバッファを作成するのに十分なリソースがあるかどうかを確認する必要がある。