次の方法で共有


協調レベル

Windows はマルチタスク環境なので、複数のアプリケーションが同時に同じデバイス ドライバを使って動作することがある。DirectX は協調レベルを使って、各アプリケーションが不適切な方法または不適切なタイミングでデバイスにアクセスしないことを保証する。DirectSound の各アプリケーションは、デバイスに対して認められるアクセス範囲を決定する 1 つの協調レベルを持つ。

デバイス オブジェクトを作成した後、IDirectSound8::SetCooperativeLevel メソッドを使ってデバイスの協調レベルを設定しなければならない。協調レベルを設定しないと音は聞こえない。

次の例では、lpDirectSoundIDirectSound8 インターフェイスによって表される DirectSound デバイスの協調レベルを設定している。hwnd パラメータは、アプリケーション ウインドウへのハンドルである。

HRESULT hr = lpDirectSound->SetCooperativeLevel(hwnd, DSSCL_PRIORITY);
if (FAILED(hr))
{
  ErrorHandler(hr);  // エラー処理をここに追加する。
}

DirectSound では、DSSCL_NORMAL、DSSCL_PRIORITY、DSSCL_WRITEPRIMARY の値で指定される 3 種類の協調レベルが、サウンド デバイスに対して定義されている。これらのレベルについては、以下のトピックで説明する。

DSSCL_EXCLUSIVE 協調レベルは廃止されている。DirectX アプリケーションで他のアプリケーションをミュートすることはできなくなった。排他的レベルを要求するアプリケーションには、代わりに優先レベルが付与される。