Microsoft DirectX 8.0 (C++) |
バッファのエフェクトを有効にする。バッファは再生中であったりロッキングされていてはならない。
このメソッドを成功させるには、CoInitialize が呼び出されている必要がある。これは、IDirectMusicPerformance8::InitAudio を使って DirectSound を作成するアプリケーションでは、自動的に実行される。しかし、DirectSoundCreate8 を使って DirectSound を作成するアプリケーションでも、CoInitialize を呼び出す必要がある。
HRESULT SetFX( DWORD dwEffectsCount, LPDSEFFECTDESC pDSFXDesc, LPDWORD pdwResultCodes );
このパラメータを NULL にすると、結果の値が返されない。また、dwEffectsCount が 0 の場合は、このパラメータを NULL にしなければならない。
成功した場合は、DS_OK または DS_INCOMPLETE を返す。
失敗した場合は、次のいずれかのエラー値を返す。
CO_E_NOTINITIALIZED |
DSERR_CONTROLUNAVAIL |
DSERR_GENERIC |
DSERR_INVALIDPARAM |
DSERR_INVALIDCALL |
DSERR_NOINTERFACE |
DSERR_PRIOLEVELNEEDED |
また、このメソッドは、IMediaObject::SetInputType や IMediaObject::SetOutputType.などの DMO メソッドのエラー値を返す。返されるエラー値については、DirectShow のドキュメントを参照すること。
失敗した場合、各エフェクトの pdwResultCodes の値は、DSFXF_PRESENT または DSFXR_UNKNOWN になる。これらの値を調べると、どのエフェクトが原因で失敗したかを特定できる。
メソッドを成功させるには、バッファが DSBCAPS_CTRLFX フラグで作成されている必要があり、また、再生中であったりロックされていてはいけない。
DSERR_NOINTERFACE またはその他の COM エラーが返された場合は、DSFXR_PRESENT または DSFXR_UNKNOWN の結果コード配列を確認し、エラーの発生原因となったエフェクトを調べる。DSERR_INVALIDPARAM が返された場合は、DSFXR_FAILED の結果コードを確認し、リソースを取得できなかったエフェクトを調べる。
バッファがオーディオパスの一部である場合、オーディオパスは非アクティブでなければならない。「IDirectMusicAudioPath8::Activate」を参照すること。
エフェクト インターフェイスを取得する前に、エフェクトをバッファに設定しなければならない。エフェクト インターフェイスを取得するには、IDirectSoundBuffer8::GetObjectInPath を使用する。
ヘッダー : dsound.h で宣言。