次の方法で共有


DSBCAPS

DSBCAPS 構造体は、DirectSound バッファ オブジェクトの能力を記述する。IDirectSoundBuffer8::GetCaps メソッドで使う。

構文

typedef struct { 
  DWORD  dwSize; 
  DWORD  dwFlags; 
  DWORD  dwBufferBytes; 
  DWORD  dwUnlockTransferRate; 
  DWORD  dwPlayCpuOverhead; 
} DSBCAPS, *LPDSBCAPS; 

typedef const DSBCAPS *LPCDSBCAPS;

メンバ

dwSize

構造体のサイズ (バイト単位)。構造体を使う前に、このメンバを初期化しなければならない。

dwFlags

バッファ オブジェクトの能力を指定するフラグ。次の表で示されている値の 1 つ以上を使う。

説明
DSBCAPS_CTRL3D バッファは 3D コントロール能力を備えている。
DSBCAPS_CTRLFREQUENCY バッファは周波数コントロール能力を備えている。
DSBCAPS_CTRLFX バッファはエフェクト処理をサポートしている。
DSBCAPS_CTRLPAN バッファはパン コントロール能力を備えている。
DSBCAPS_CTRLVOLUME バッファはボリューム コントロール能力を備えている。
DSBCAPS_CTRLPOSITIONNOTIFY バッファは位置通知能力を備えている。「DSBUFFERDESC」の「注意」を参照。
DSBCAPS_GETCURRENTPOSITION2 IDirectSoundBuffer8::GetCurrentPosition が呼び出されると、バッファは再生カーソルの新しい動作を使う。DirectSound の最初のバージョンでは、エミュレートされたサウンド カード上の再生カーソルは実際の再生サウンドよりはるか前方にあり、書き込みカーソルの直後に置かれていた。現在は、DSBCAPS_GETCURRENTPOSITION2 フラグを指定すると、アプリケーションはより正確な再生カーソルを取得できる。このフラグを指定していない場合、互換性を保つために過去の動作が維持される。このフラグは、エミュレートされたデバイスにのみ影響を及ぼす。DirectSound ドライバが存在する場合は、DirectX のどのバージョンでも、DirectSound の再生カーソルは正確な位置を示す。
DSBCAPS_GLOBALFOCUS バッファはグローバルなサウンド バッファである。このフラグを設定すると、ユーザーが他のアプリケーションにフォーカスを移動し、その新しいアプリケーションが DirectSound を使う場合でも、DirectSound を使っているアプリケーションは引き続きそのバッファを再生できる。1 つの例外は、協調レベルで DSSCL_WRITEPRIMARY フラグを設定した DirectSound アプリケーションにフォーカスを移動した場合である。この場合、他のアプリケーションからのグローバルなサウンドは聞こえなくなる。
DSBCAPS_LOCDEFER 再生時、または IDirectSoundBuffer8::AcquireResources が呼び出されたときに、バッファはハードウェアまたはソフトウェアのリソースに割り当てられる。
DSBCAPS_LOCHARDWARE バッファはハードウェア ミキシングを使う。
DSBCAPS_LOCSOFTWARE バッファはソフトウェア メモリ内にあり、ソフトウェア ミキシングを使う。
DSBCAPS_MUTE3DATMAXDISTANCE サウンドは、最大距離で無音になる。最大距離を超えるとバッファの再生が停止するので、プロセッサ時間を消費しないで済む。ソフトウェア バッファに対してのみ適用される。
DSBCAPS_PRIMARYBUFFER バッファはプライマリ バッファである。
DSBCAPS_STATIC バッファはオンボード ハードウェア メモリにある。
DSBCAPS_STICKYFOCUS バッファはスティッキー フォーカスを備えている。ユーザーが DirectSound を使っていない他のアプリケーションに切り替えた場合、バッファは引き続き音を出す。ただし、ユーザーが他の DirectSound アプリケーションに切り替えた場合、バッファは無音になる。

dwBufferBytes

このバッファのサイズ (バイト単位)。

dwUnlockTransferRate

IDirectSoundBuffer8::Unlock を呼び出したときにデータをバッファ メモリに転送する速度。単位は 1 秒あたりのキロバイト数 (KB/秒)。高性能のアプリケーションはこの値を使って、IDirectSoundBuffer8::Unlock を実行するために必要な時間を決定できる。システム メモリ内に配置されているソフトウェア バッファの場合、処理が不要なので転送速度は非常に高い。ハードウェア バッファの場合、バッファをサウンド カードにロードしなければならない可能性があるので、転送速度はより遅くなる可能性がある。その結果、転送速度が制限されることがある。

dwPlayCpuOverhead

処理のオーバーヘッド。サウンド バッファをミキシングするために必要なメイン プロセッサ サイクルのパーセンテージである。ハードウェア バッファの場合は、サウンド デバイスがミキシングを行うので、このメンバは 0 である。ソフトウェア バッファの場合は、このメンバの値はバッファ フォーマットとシステム プロセッサの速度に依存する。

注意

DSBCAPS 構造体は、IDirectSound8::CreateSoundBuffer メソッドに渡される DSBUFFERDESC 構造体に似た情報と、それ以外のいくつかの追加情報を保持している。追加情報としては、バッファの位置 (ハードウェアまたはソフトウェア) や、いくつかのコスト測定値 (バッファがハードウェアに配置されている場合のダウンロード時間、ソフトウェアでバッファをミキシングする場合は再生処理のオーバーヘッドなど) がある。

dwFlags メンバは、DSBUFFERDESC 構造体で使われるものと同じフラグを格納する。唯一の違いは、DSBCAPS 構造体ではバッファの場所に応じて DSBCAPS_LOCHARDWARE と DSBCAPS_LOCSOFTWARE のどちらかが指定されることである。DSBUFFERDESC 構造体ではこれらのフラグはオプションであり、バッファをハードウェアとソフトウェアのどちらかに強制的に配置するために使う。

要件

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

参照