Platform SDK: DirectX

IDirectSound::CreateSoundBuffer

IDirectSound::CreateSoundBuffer メソッドは、サンプリング オーディオのシーケンスを保持するための DirectSoundBuffer オブジェクトを作成する。

HRESULT CreateSoundBuffer(
  LPCDSBUFFERDESC lpcDSBufferDesc,              
  LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer,  
  IUnknown FAR * pUnkOuter                      
);

パラメータ

lpcDSBufferDesc
作成されるサウンド バッファの記述を保持する DSBUFFERDESC 構造体へのポインタ。
lplpDirectSoundBuffer
新規の DirectSoundBuffer オブジェクトへのポインタ。バッファを作成できない場合は NULL。
pUnkOuter
全体の未定義のコントロール。この値は NULL でなければならない。

戻り値

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

DSERR_ALLOCATED
DSERR_CONTROLUNAVAIL
DSERR_BADFORMAT
DSERR_INVALIDPARAM
DSERR_NOAGGREGATION
DSERR_OUTOFMEMORY
DSERR_UNINITIALIZED
DSERR_UNSUPPORTED

注意

DSBCAPS_CTRLDEFAULT は、これが表す個別のフラグを使うようにと削除された。DSBCAPS_CTRLDEFAULT は、DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY として定義された。必要なフラグだけを指定することにより、不必要なリソースを減らすことができる。

サウンド バッファを再生する前に、アプリケーションは IDirectSound::SetCooperativeLevel メソッドを使って DirectSound オブジェクトの協調レベルを指定しなければならない。

lpDSBufferDesc パラメータは、フォーマット、サイズ、能力など、希望のバッファのタイプ情報を含む構造体を指す。アプリケーションは必要な能力を指定しなければならない。さもないと、それらの能力は利用できない。たとえば、DirectSound オブジェクトを作成するときに DSBCAPS_CTRLFREQUENCY フラグを指定しておかないと、IDirectSoundBuffer::SetFrequency の呼び出しはすべて失敗する。

DSBCAPS_STATIC フラグを指定することもできる。その場合、DirectSound はオンボード メモリ (使用可能な場合) にバッファを格納し、ハードウェア ミキシングを利用できる。ハードウェアまたはソフトウェアのミキシングをバッファに使わせるには、それぞれ DSBCAPS_LOCHARDWARE または DSBCAPS_LOCSOFTWARE フラグを使う。さらに、DirectSound は DSBCAPS_LOCDEFER フラグを使用することで、再生中にハードウェアやソフトウェアのリソースを割り当てる。

バッファがハードウェアかソフトウェアに作成されたことを把握するには、IDirectSoundBuffer:GetCaps メソッドを呼び出し、返された DSBCAPS 構造体の dwFlags メンバの DBSCAPS_LOCHARDWARE フラグ、または DSBCAPS_LOCSOFTWARE フラグをチェックする。

動作環境

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

参照

DSBUFFERDESCIDirectSound::DuplicateSoundBufferIDirectSound::SetCooperativeLevelIDirectSoundBuffer, IDirectSoundBuffer::GetFormatIDirectSoundBuffer::GetVolumeIDirectSoundBuffer::LockIDirectSoundBuffer::PlayIDirectSoundBuffer::SetFormatIDirectSoundBuffer::SetFrequency