Platform SDK: DirectX

IDirectSoundBuffer::SetFormat

IDirectSoundBuffer::SetFormat メソッドは、このアプリケーション用のプライマリ サウンド バッファのフォーマットを設定する。このアプリケーションに入力フォーカスが置かれるたびに、DirectSound はプライマリ バッファを指定されたフォーマットに設定する。

HRESULT SetFormat(
  LPCWAVEFORMATEX lpcfxFormat  
);

パラメータ

lpcfxFormat
WAVEFORMATEX 構造体のアドレス。この構造体は、プライマリ サウンド バッファの新しいフォーマットを記述する。

戻り値

成功すれば DS_OK、失敗すれば次のエラー値のいずれかを返す。

DSERR_BADFORMAT
DSERR_INVALIDCALL
DSERR_INVALIDPARAM
DSERR_OUTOFMEMORY
DSERR_PRIOLEVELNEEDED
DSERR_UNSUPPORTED

注意

書き込み優先協調レベルでアクセスされているプライマリ バッファに対してこのメソッドを呼び出す場合は、IDirectSoundBuffer::SetFormat を呼び出す前にバッファを停止しておかなければならない。書き込み優先以外の協調レベルのプライマリ バッファに対してこのメソッドを呼び出す場合は、DirectSound はプライマリ バッファを明示的に停止し、フォーマットを変更し、プライマリを再開する。アプリケーションがこれらの作業を明示的に行う必要はない。

ハードウェアが、要求されたフォーマットをサポートしていない場合でも、このメソッドは成功する。DirectSound はバッファを、要求に最も近いフォーマットに設定し、要求されたフォーマットでサウンドをミックスし、変換した上でプライマリ バッファに送る。このような状況が発生しているかどうかを判断するには、アプリケーションはプライマリ バッファに対して IDirectSoundBuffer::GetFormat メソッドを呼び出し、その結果を、SetFormat メソッドで要求したフォーマットと比較する。

アプリケーションが DSSCL_NORMAL 協調レベルに設定されている場合、このメソッドの呼び出しは失敗する。

このメソッドはセカンダリ サウンド バッファには有効ではない。セカンダリ サウンド バッファがフォーマットの変更を必要とする場合、アプリケーションは新しいフォーマットを使う新しい DirectSoundBuffer オブジェクトを作成すべきである。

DirectSound は PCM フォーマットをサポートしている。現在、圧縮フォーマットはサポートしていない。

動作環境

  Windows NT/2000 : Service Pack 3 を適用した Windows NT バージョン 4.0 以降が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dsound.h で宣言。
  インポート ライブラリ : dsound.lib を使用。

参照

IDirectSoundBufferIDirectSoundBuffer::GetFormat