次の方法で共有


DSBCAPS

DSBCAPS 構造体は、DirectSound バッファー オブジェクトの能力を表します。この構造体は、IDirectSoundBuffer8::GetCaps メソッドで使用されます。

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

メンバ

  • dwSize
    構造体のサイズ (バイト単位) です。構造体を使用する前に、このメンバーを初期化する必要があります。

  • dwFlags
    バッファー オブジェクトの能力を指定するフラグです。次の表の 1 つまたは複数の値を使用します。

    説明
    DSBCAPS_CTRL3Dバッファーには 3 D 制御機能があります。
    DSBCAPS_CTRLFREQUENCYバッファーには周波数制御機能があります。
    DSBCAPS_CTRLFXバッファーはエフェクト処理をサポートしています。
    DSBCAPS_CTRLPANバッファーにはパン制御機能があります。
    DSBCAPS_CTRLVOLUMEバッファーにはボリューム制御機能があります。
    DSBCAPS_CTRLPOSITIONNOTIFYバッファーは位置通知機能があります。DSCBUFFERDESC の「解説」を参照してください。
    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 アプリケーションに切り替えた場合、バッファーは消音されます。
    DSBCAPS_TRUEPLAYPOSITIONバッファーの真の再生位置を返すように IDirectSoundBuffer8::GetCurrentPosition に強制します。このフラグは Windows Vista でのみ有効です。
  • dwBufferBytes
    このバッファーのサイズ (バイト単位) です。

  • dwUnlockTransferRate
    IDirectSoundBuffer8::Unlock を呼び出したときに、データがバッファー メモリーに転送される速度 (1 秒あたりの KB 数) です。高性能のアプリケーションでは、この値を使用して IDirectSoundBuffer8::Unlock を実行するために必要な時間を判定できます。システム メモリーにあるソフトウェア バッファーの場合、処理が不要なためこの速度はきわめて高い値になります。ハードウェア バッファーでは、サウンド カードへのダウンロードが必要な場合があり、転送速度が制限されるため、転送速度が低速になることがあります。

  • dwPlayCpuOverhead
    サウンド バッファーをミックスするために必要な処理オーバーヘッドであり、メイン プロセッサ サイクルの割合として表わされます。ハードウェア バッファーの場合、ミキシングはサウンド デバイスで実行されるため、このメンバーはゼロになります。ソフトウェア バッファーの場合、このメンバーはバッファー フォーマット、およびシステム プロセッサの速度によって異なります。

解説 

DSBCAPS 構造体は、IDirectSound8::CreateSoundBuffer メソッドに渡される DSCBUFFERDESC 構造体と同様の情報を格納し、さらにいくつかの追加情報を保持します。追加情報には、バッファーの場所 (ハードウェアまたはソフトウェア) および一部のコスト測定値 (ハードウェアにある場合はバッファーのダウンロードにかかる時間、ソフトウェアでミックスされる場合はバッファーを再生するための処理オーバーヘッドなど) があります。

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

Windows Vista に実装されている #defines を使用するには、DSound.h をインクルードする前に DIRECTSOUND_VERSION を 0x1000 に設定します。

要件

ヘッダー: DSound.h 宣言

関連項目

IDirectSound8::CreateSoundBuffer | IDirectSoundBuffer8::GetCaps