デバイスの能力
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 メソッドを呼び出して、次のバッファを作成するのに十分なリソースがあるかどうかを確認する必要がある。