Platform SDK: DirectX |
IDirectSoundBuffer::GetCaps は、DirectSoundBuffer オブジェクトの能力を取得する。
アプリケーションは IDirectSoundBuffer::GetStatus メソッドを使って、現在のサウンド バッファが再生中か停止しているかを確認できる。
IDirectSoundBuffer::GetFormat メソッドを使うと、バッファ内のサウンド データのフォーマット情報を取得できる。IDirectSoundBuffer::GetFormat と IDirectSoundBuffer::SetFormat の各メソッドを使って、プライマリ サウンド バッファ内のサウンド データのフォーマットの取得と設定も行える。
注 : セカンダリ サウンド バッファを作成した後、そのフォーマットが固定される。他のフォーマットを使うセカンダリ バッファが必要な場合は、そのフォーマットを指定して新しいサウンド バッファを作成しなければならない。
サウンド バッファ用のメモリは特定の状況で失われることがある。たとえば、バッファがサウンド カードのメモリに置かれていて、他のアプリケーションがハードウェア リソースの制御を取得した場合である。書き込み優先の協調レベルで動作するアプリケーションがフォアグラウンドに移動した場合も、メモリが失われることがある。この場合、他のすべてのサウンド バッファは失われるので、フォアグラウンドに移動したアプリケーションはプライマリ バッファに直接書き込める。
失われたバッファに対して IDirectSoundBuffer::Lock、IDirectSoundBuffer::Play メソッドのいずれかを呼び出すと、DSERR_BUFFERLOST エラーコードが返される。バッファを失わせたアプリケーションの協調レベルが書き込み優先から下がったり、そのアプリケーションがバックグラウンドに移動した場合は、他のアプリケーションは IDirectSoundBuffer::Restore メソッドを呼び出してバッファ メモリの再配置を試みることができる。成功した場合、このメソッドはバッファ メモリと、ボリュームやパンの設定など他のすべての設定を復元する。しかし、復元されたバッファは有効なサウンド データを保持していない。したがって、アプリケーションは復元されたバッファにデータをもう一度書き込むべきである。
DirectSoundBuffer.GetCaps メソッドは、DirectSoundBuffer オブジェクトの能力を取得する。
アプリケーションは DirectSoundBuffer.GetStatus メソッドを使って、現在のサウンド バッファが再生中か停止しているかを確認できる。
DirectSoundBuffer.GetFormat メソッドを使うと、バッファ内のサウンド データのフォーマット情報を取得できる。DirectSoundBuffer.GetFormat と DirectSoundBuffer.SetFormat の各メソッドを使って、プライマリ サウンド バッファ内のサウンド データのフォーマットの取得と設定も行える。
注 : セカンダリ サウンド バッファを作成した後、そのフォーマットが固定される。他のフォーマットを使うセカンダリ バッファが必要な場合は、そのフォーマットを指定して新しいサウンド バッファを作成しなければならない。
サウンド バッファ用のメモリは特定の状況で失われることがある。たとえば、バッファがサウンド カードのメモリに置かれていて、他のアプリケーションがハードウェア リソースの制御を取得した場合である。書き込み優先の協調レベルで動作するアプリケーションがフォアグラウンドに移動した場合も、メモリが失われることがある。この場合、他のすべてのサウンド バッファは失われるので、フォアグラウンドに移動したアプリケーションはプライマリ バッファに直接書き込める。
失われたバッファに対して DirectSoundBuffer.WriteBuffer、DirectSoundBuffer.Play メソッドのいずれかを呼び出すと、DSERR_BUFFERLOST エラー コードが返される。バッファを失わせたアプリケーションの協調レベルが書き込み優先から下がったり、そのアプリケーションがバックグラウンドに移動した場合は、他のアプリケーションは DirectSoundBuffer.Restore メソッドを呼び出してバッファ メモリの再配置を試みることができる。成功した場合、このメソッドはバッファ メモリと、ボリュームやパンの設定など他のすべての設定を復元する。しかし、復元されたバッファは有効なサウンド データを保持していない。したがって、アプリケーションは復元されたバッファにデータをもう一度書き込むべきである。