Platform SDK: DirectX

バッファ管理

[C++]

IDirectSoundBuffer::GetCaps は、DirectSoundBuffer オブジェクトの能力を取得する。

アプリケーションは IDirectSoundBuffer::GetStatus メソッドを使って、現在のサウンド バッファが再生中か停止しているかを確認できる。

IDirectSoundBuffer::GetFormat メソッドを使うと、バッファ内のサウンド データのフォーマット情報を取得できる。IDirectSoundBuffer::GetFormat IDirectSoundBuffer::SetFormat の各メソッドを使って、プライマリ サウンド バッファ内のサウンド データのフォーマットの取得と設定も行える。

 :  セカンダリ サウンド バッファを作成した後、そのフォーマットが固定される。他のフォーマットを使うセカンダリ バッファが必要な場合は、そのフォーマットを指定して新しいサウンド バッファを作成しなければならない。

サウンド バッファ用のメモリは特定の状況で失われることがある。たとえば、バッファがサウンド カードのメモリに置かれていて、他のアプリケーションがハードウェア リソースの制御を取得した場合である。書き込み優先の協調レベルで動作するアプリケーションがフォアグラウンドに移動した場合も、メモリが失われることがある。この場合、他のすべてのサウンド バッファは失われるので、フォアグラウンドに移動したアプリケーションはプライマリ バッファに直接書き込める。

失われたバッファに対して IDirectSoundBuffer::LockIDirectSoundBuffer::Play メソッドのいずれかを呼び出すと、DSERR_BUFFERLOST エラーコードが返される。バッファを失わせたアプリケーションの協調レベルが書き込み優先から下がったり、そのアプリケーションがバックグラウンドに移動した場合は、他のアプリケーションは IDirectSoundBuffer::Restore メソッドを呼び出してバッファ メモリの再配置を試みることができる。成功した場合、このメソッドはバッファ メモリと、ボリュームやパンの設定など他のすべての設定を復元する。しかし、復元されたバッファは有効なサウンド データを保持していない。したがって、アプリケーションは復元されたバッファにデータをもう一度書き込むべきである。

[Visual Basic]

DirectSoundBuffer.GetCaps メソッドは、DirectSoundBuffer オブジェクトの能力を取得する。

アプリケーションは DirectSoundBuffer.GetStatus メソッドを使って、現在のサウンド バッファが再生中か停止しているかを確認できる。

DirectSoundBuffer.GetFormat メソッドを使うと、バッファ内のサウンド データのフォーマット情報を取得できる。DirectSoundBuffer.GetFormatDirectSoundBuffer.SetFormat の各メソッドを使って、プライマリ サウンド バッファ内のサウンド データのフォーマットの取得と設定も行える。

 :  セカンダリ サウンド バッファを作成した後、そのフォーマットが固定される。他のフォーマットを使うセカンダリ バッファが必要な場合は、そのフォーマットを指定して新しいサウンド バッファを作成しなければならない。

サウンド バッファ用のメモリは特定の状況で失われることがある。たとえば、バッファがサウンド カードのメモリに置かれていて、他のアプリケーションがハードウェア リソースの制御を取得した場合である。書き込み優先の協調レベルで動作するアプリケーションがフォアグラウンドに移動した場合も、メモリが失われることがある。この場合、他のすべてのサウンド バッファは失われるので、フォアグラウンドに移動したアプリケーションはプライマリ バッファに直接書き込める。

失われたバッファに対して DirectSoundBuffer.WriteBufferDirectSoundBuffer.Play メソッドのいずれかを呼び出すと、DSERR_BUFFERLOST エラー コードが返される。バッファを失わせたアプリケーションの協調レベルが書き込み優先から下がったり、そのアプリケーションがバックグラウンドに移動した場合は、他のアプリケーションは DirectSoundBuffer.Restore メソッドを呼び出してバッファ メモリの再配置を試みることができる。成功した場合、このメソッドはバッファ メモリと、ボリュームやパンの設定など他のすべての設定を復元する。しかし、復元されたバッファは有効なサウンド データを保持していない。したがって、アプリケーションは復元されたバッファにデータをもう一度書き込むべきである。