IDirectSoundBuffer8::SetFormat

SetFormat メソッドは、プライマリ バッファーのフォーマットを設定します。アプリケーションに入力フォーカスがあるときには常に、プライマリ バッファーが指定されたフォーマットに設定されます。

HRESULT 
SetFormat(
  LPCWAVEFORMATEX pcfxFormat
);

パラメータ

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

戻り値

成功した場合は、DS_OK を返します。失敗した場合は、次のいずれかのエラー値を返します。

リターン コード
DSERR_BADFORMAT
DSERR_INVALIDCALL
DSERR_INVALIDPARAM
DSERR_OUTOFMEMORY
DSERR_PRIOLEVELNEEDED
DSERR_UNSUPPORTED

解説 

プライマリ バッファーのフォーマットは、セカンダリ バッファーを作成する前に設定する必要があります。

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

アプリケーションが DSSCL_WRITEPRIMARY 協調レベルで DirectSound を使用しており、フォーマットがサポートされていない場合、メソッドは失敗します。

協調レベルが DSSCL_PRIORITY である場合、DirectSound はプライマリ バッファーを停止し、フォーマットを変更して、バッファーを再開します。要求されたフォーマットをハードウェアがサポートしていない場合でも、メソッドは成功します。DirectSound は、サポートしているフォーマットの中で要求に最も近いものにバッファーを設定します。このような状況が発生しているかどうかをアプリケーションで判断するには、プライマリ バッファーに対して GetFormat メソッドを呼び出し、その結果を SetFormat メソッドで要求したフォーマットと比較します。

このメソッドは、セカンダリ サウンド バッファーでは利用できません。新しいフォーマットが必要な場合、アプリケーションは新しい DirectSoundBuffer オブジェクトを作成する必要があります。

要件

ヘッダー: DSound.h 宣言

ライブラリ: Dsound3d.dll 内容

関連項目

IDirectSoundBuffer8