IDirectSoundBuffer8::AcquireResources
AcquireResources メソッドは、DSBUFFERDESC 構造体の DSBCAPS_LOCDEFER フラグを指定して作成されたバッファーにリソースを割り当てます。
HRESULT
AcquireResources(
DWORD dwFlags,
DWORD dwEffectsCount,
LPDWORD pdwResultCodes
);
パラメータ
dwFlags
DSBCAPS_LOCDEFER フラグを指定して作成されたバッファーにリソースを割り当てる方法を指定するフラグです。値のリストについては、Play のボイス管理フラグおよびボイス割り当てフラグを参照してください。dwEffectsCount
pdwResultFlags 配列の要素の数です。pdwResultCodes が NULL の場合は 0 です。pdwResultCodes
バッファーに関連付けられたエフェクトに関する情報を受け取る DWORD 変数の配列のアドレスです。この配列には、SetFX によってバッファーに割り当てられたエフェクトごとに要素が 1 つずつ含まれている必要があります。各エフェクトに対して、次の表に示されている値のいずれかが返されます。注 結果コードが不要な場合は、このパラメーターを NULL にすることができます。
値 説明 DSFXR_LOCHARDWARE エフェクトはハードウェアでインスタンス化されます。 DSFXR_LOCSOFTWARE エフェクトはソフトウェアでインスタンス化されます。 DSFXR_FAILED リソースを利用できなかったため、エフェクトは作成されていません。 DSFXR_PRESENT エフェクトは利用可能ですが、他の理由でメソッドが失敗したため、作成されていません。 DSFXR_UNKNOWN エフェクトがシステムに登録されていないため、エフェクトは作成されていません。
戻り値
成功した場合は、DS_OK または DS_INCOMPLETE を返します。失敗した場合は、以下の表に示すエラー値のいずれかが戻り値となります。
リターン コード |
---|
DSERR_CONTROLUNAVAIL |
DSERR_INVALIDCALL |
DSERR_INVALIDPARAM |
解説
通常、DSBCAPS_LOCDEFER を指定して作成されたバッファーは、Play が呼び出されるまでリソースを割り当てられません。再生前に遅延バッファーにリソースを割り当てるには、IDirectSoundBuffer8::AcquireResources を使用します。これにより、アプリケーションはエフェクトの処理に関する情報を取得し、エフェクト パラメーターを設定できます。メソッドが失敗した場合は、pdwResultCodes の値を調べて、失敗の原因となったエフェクトを特定します。
リソースを取得したバッファーのうち、まだ再生されていないものは、Play メソッドに渡されたボイス管理フラグによる早期終了の候補にはなりません。
AcquireResources によって取得されたリソースは、再生が停止すると解放されます。
このメソッドが既に呼び出されているバッファーで、再びこのメソッドが呼び出された場合、エフェクトのステータスは返されますが、それ以上リソースは割り当てられません。
この関数の dwEffectsCount パラメーターは、SetFX の呼び出しで渡したものと同じでなければなりません。
ハードウェア アクセラレーションを利用できないシステムで、DSBCAPS_LOCHARDWARE フラグを指定してバッファーのリソースを取得しようとすると、メソッドは失敗し、オペレーティング システムに応じて DSERR_CONTROLUNAVAIL または DSERR_INVALIDCALL を返します。
要件
ヘッダー: DSound.h 宣言
ライブラリ: Dsound3d.dll 内容