Platform SDK: DirectX

DSBUFFERDESC1

DSBUFFERDESC1 構造体は、新しい DirectSoundBuffer オブジェクトの必須の特徴を示す。この構造体は、DirectX 7.0 以前のバージョンで DirectSound アプリケーションを作成する際、IDirectSound::CreateSoundBuffer メソッドによって使われる。

typedef struct { 
    DWORD           dwSize; 
    DWORD           dwFlags; 
    DWORD           dwBufferBytes; 
    DWORD           dwReserved; 
    LPWAVEFORMATEX  lpwfxFormat; 
} DSBUFFERDESC, *LPDSBUFFERDESC; 
 
typedef const DSBUFFERDESC *LPCDSBUFFERDESC;

メンバ

dwSize
この構造体のサイズ。単位はバイト。この構造体を使う前に、このメンバを初期化しなければならない。
dwFlags
新しい DirectSoundBuffer オブジェクトを作成するときに含める能力を識別する。以下の 1 つまたは複数を指定する。
DSBCAPS_CTRL3D
このバッファは、3D コントロールを使う、プライマリ バッファまたはセカンダリ バッファのどちらかである。
DSBCAPS_CTRLFREQUENCY
バッファは周波数コントロール能力を備えていなければならない。
DSBCAPS_CTRLPAN
バッファはパン コントロール能力を備えていなければならない。
DSBCAPS_CTRLPOSITIONNOTIFY
バッファは位置通知能力を備えていなければならない。VxD ドライバでは、サウンド バッファが DSBCAPS_CTRLPOSITIONNOTIFY で作成される場合、このバッファは常にソフトウェア バッファになる。これは、VxD ドライバ モデルが通知インターフェイスをサポートしないためである。ハードウェアが利用可能な場合、WDM ドライバにより、位置通知可能なバッファがハードウェアに存在することがある。このフラグ設定で作成されたバッファの再生中は、DSBPLAY_LOCHARDWARE フラグによる IDirectSoundBuffer::Play の呼び出しは失敗する。
DSBCAPS_CTRLVOLUME
バッファはボリューム コントロール能力を備えていなければならない。
DSBCAPS_GETCURRENTPOSITION2
IDirectSoundBuffer::GetCurrentPosition が再生カーソルの新しい動作を使うべきであることを示す。DirectX 1 の DirectSound では、エミュレートされたサウンド カード上で再生カーソルは実際に再生されているサウンドよりはるかに前方にあり、書き込みカーソルの直後に置かれていた。現在は、DSBCAPS_GETCURRENTPOSITION2 フラグを指定すると、アプリケーションはより正確な再生位置を取得できる。このフラグを指定していない場合、互換性を保つ目的で過去の動作が維持される。このフラグは、エミュレートされたサウンド カードにのみ影響を及ぼす点に注意すること。DirectSound ドライバが存在する場合、DirectX のどのバージョンでも、DirectSound の再生カーソルは正確な位置を示す。
DSBCAPS_GLOBALFOCUS
このバッファはグローバルなサウンド バッファである。このフラグを設定すると、ユーザーが他のアプリケーションにフォーカスを移動し、その新しいアプリケーションが DirectSound を使う場合でも、DirectSound を使っているアプリケーションは引き続きそのバッファを再生できる。1 つの例外は、協調レベルで DSSCL_EXCLUSIVE または DSSCL_WRITEPRIMARY フラグを設定した DirectSound アプリケーションにフォーカスを移動した場合である。この場合、他のアプリケーションからのグローバルなサウンドは聞こえなくなる。
DSBCAPS_LOCHARDWARE
DSBCAPS_STATIC が指定されていない場合でも、強制的にバッファにハードウェア ミキシングを使わせる。デバイスがハードウェア ミキシングをサポートしていない場合や、必要なハードウェア メモリが利用不可能な場合は、IDirectSound::CreateSoundBuffer の呼び出しは失敗する。アプリケーションは、このバッファがミキシング チャンネルを利用可能であると保証する必要がある。この状況は保証されていない。
DSBCAPS_LOCSOFTWARE
DSBCAPS_STATIC が指定されていて、ハードウェア リソースが利用可能であっても、強制的にバッファをソフトウェア メモリに配置して、ソフトウェア ミキシングを使うようにする。
DSBCAPS_MUTE3DATMAXDISTANCE
サウンドは、最大距離で無音になる。最大距離を超えるとバッファの再生が停止するので、プロセッサ時間を消費しないですむ。
DSBCAPS_PRIMARYBUFFER
このバッファがプライマリ サウンド バッファであることを示す。この値を指定しない場合、セカンダリ サウンド バッファが作成される。
DSBCAPS_STATIC
このバッファをスタティック サウンド データ用に使うことを示す。一般に、このようなバッファは 1 回ロードされ、何回も再生される。このようなバッファはハードウェア メモリに配置されることがある。
DSBCAPS_STICKYFOCUS
サウンド バッファのフォーカスの動作を変更する。IDirectSound::CreateSoundBuffer を呼び出す際に、このフラグを指定できる。このフラグを設定すると、ユーザーが DirectSound を使っていない他のアプリケーションに切り替えた場合でも、DirectSound を使っているアプリケーションはスティッキー フォーカス バッファの再生を続行できる。この状態でアプリケーションの標準バッファは無音になるが、スティッキー フォーカス バッファは引き続き音を出す。たとえばユーザーが Microsoft Word や Microsoft Excel で入力をしながら、ゲーム以外のアプリケーション、たとえば映画再生 (DirectShow ™) でサウンド トラックを聞きたいと考える場合に役立つ。しかし、ユーザーが他の DirectSound アプリケーションに切り替えると、すべてのサウンド バッファ、この例では標準バッファとスティッキー フォーカス バッファの両方が無音になる。
dwBufferBytes
新しいバッファのサイズ。単位はバイト。プライマリ バッファを作成するときは、この値は 0 でなければならない。セカンダリ バッファで許容される最小サイズと最大サイズは、dsound.h 内で定義される DSBSIZE_MIN、DSBSIZE_MAX である。
dwReserved
このメンバは予約されている。使わないこと。
lpwfxFormat
このバッファのウェーブ フォーマットを指定する構造体のアドレス。プライマリ バッファでは、この値は NULL でなければならない。アプリケーションは IDirectSoundBuffer::SetFormat を使って、プライマリ バッファのフォーマットを設定できる。

注意

この構造体は、DirectX 6.1 以前のバージョンのみで使用可能である。DirectX 7.0 と互換性のあるアプリケーションでは、DSBUFFERDESC 構造体を使う必要がある。

dwFlags メンバで使われる DSBCAPS_LOCHARDWARE と DSBCAPS_LOCSOFTWARE の各フラグはオプションであり、互いに排他的である。DSBCAPS_LOCHARDWARE は、強制的にバッファをサウンド カードのメモリに配置する。DSBCAPS_LOCSOFTWARE は、可能であれば、強制的にバッファをメイン システム メモリに配置する。

これらのフラグは DSBCAPS 構造体の dwFlags メンバでも使うように定義されている。このメンバでこれらのフラグを使う場合、フラグは DirectSoundBuffer オブジェクトの実際の場所を示す。

プライマリ バッファを作成する際、アプリケーションは dwBufferBytes メンバを 0 に設定しなければならない。DirectSound は、使用中の特定のサウンド デバイスに対する最適なバッファ サイズを決定する。作成されたプライマリ バッファの大きさを取得するには、IDirectSoundBuffer::GetCaps を呼び出す。

動作環境

  Windows NT/2000 : Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dsound.h で宣言。

参照

IDirectSound::CreateSoundBuffer