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