次の方法で共有


IDirectSoundBuffer8::SetFormat

プライマリ バッファのフォーマットを設定する。このアプリケーションが入力フォーカスを得るたびに、DirectSound はプライマリ バッファを指定されたフォーマットに設定する。

プライマリ サウンド バッファは IDirectSoundBuffer8 インターフェイスをサポートしていないので、IDirectSoundBuffer でこのメソッドを呼び出す必要がある。

WDM ドライバに対しては、プライマリ バッファのフォーマットを設定しても何も影響がない。出力フォーマットは、カーネル ミキサによって決定される。詳細については、「DirectSound ドライバ モデル」を参照すること。

構文

  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 を使っている場合は、SetFormat を呼び出す前にバッファを停止しなければならない。フォーマットがサポートされていない場合、メソッドは失敗する。

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

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

要件

**  ヘッダー:**dsound.h で宣言。

参照