Win32 API 日本語リファレンス
ホームMedia.Audio.DirectSound › IDirectSoundBuffer

IDirectSoundBuffer

COM
IID279afa85-4981-11ce-a521-0020af0be560継承元IUnknown自前メソッド開始 vtbl3

メソッド 18

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetCaps(DSBCAPS* pDSBufferCaps)
pDSBufferCapsDSBCAPS*outこのバッファの能力情報を受け取るDSBCAPS構造体へのポインタ。dwSizeを事前設定する。
vtbl 4 HRESULT GetCurrentPosition(DWORD* pdwCurrentPlayCursor, DWORD* pdwCurrentWriteCursor)
pdwCurrentPlayCursorDWORD*outoptional現在の再生カーソル位置(バイトオフセット)を受け取るポインタ。NULL可。
pdwCurrentWriteCursorDWORD*outoptional安全に書き込み可能な位置(バイトオフセット)を受け取るポインタ。NULL可。
vtbl 5 HRESULT GetFormat(WAVEFORMATEX* pwfxFormat, DWORD dwSizeAllocated, DWORD* pdwSizeWritten)
pwfxFormatWAVEFORMATEX*outoptionalバッファの波形フォーマットを受け取るWAVEFORMATEX構造体へのポインタ。サイズ問い合わせ時はNULL。
dwSizeAllocatedDWORDinpwfxFormatバッファに割り当てたサイズ(バイト)。
pdwSizeWrittenDWORD*outoptional実際に書き込まれた、または必要なフォーマット情報のバイト数を受け取るポインタ。
vtbl 6 HRESULT GetVolume(INT* plVolume)
plVolumeINT*out現在の音量(減衰、100分の1デシベル単位、0が原音、-10000が無音)を受け取るポインタ。
vtbl 7 HRESULT GetPan(INT* plPan)
plPanINT*out現在のパン(左右バランス、100分の1デシベル単位、0が中央)を受け取るポインタ。
vtbl 8 HRESULT GetFrequency(DWORD* pdwFrequency)
pdwFrequencyDWORD*out現在の再生周波数(Hz)を受け取るポインタ。
vtbl 9 HRESULT GetStatus(DWORD* pdwStatus)
pdwStatusDWORD*outバッファの状態フラグ(DSBSTATUS_PLAYING/LOOPINGなど)を受け取るポインタ。
vtbl 10 HRESULT Initialize(IDirectSound* pDirectSound, DSBUFFERDESC* pcDSBufferDesc)
pDirectSoundIDirectSound*inこのバッファを所有するIDirectSoundオブジェクトへのポインタ。
pcDSBufferDescDSBUFFERDESC*inバッファの形式と能力を指定するDSBUFFERDESC構造体へのポインタ。
vtbl 11 HRESULT Lock(DWORD dwOffset, DWORD dwBytes, void** ppvAudioPtr1, DWORD* pdwAudioBytes1, void** ppvAudioPtr2, DWORD* pdwAudioBytes2, DWORD dwFlags)
dwOffsetDWORDinロックを開始するバッファ内バイトオフセット。
dwBytesDWORDinロックするバイト数。
ppvAudioPtr1void**outロックされた第1区画の先頭ポインタの受け取り先。
pdwAudioBytes1DWORD*out第1区画のバイト数を受け取るポインタ。
ppvAudioPtr2void**outoptionalラップアラウンドした第2区画の先頭ポインタの受け取り先。無ければNULL。
pdwAudioBytes2DWORD*outoptional第2区画のバイト数を受け取るポインタ。
dwFlagsDWORDinロック動作フラグ(DSBLOCK_FROMWRITECURSOR/ENTIREBUFFER)。
vtbl 12 HRESULT Play(DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags)
dwReserved1DWORDin予約済み。0を指定する。
dwPriorityDWORDinDSBCAPS_LOCDEFER使用時のバッファ優先度(0〜0xFFFFFFFF)。
dwFlagsDWORDin再生フラグ(DSBPLAY_LOOPING など)。
vtbl 13 HRESULT SetCurrentPosition(DWORD dwNewPosition)
dwNewPositionDWORDin再生カーソルを移動させる新しいバイトオフセット位置。
vtbl 14 HRESULT SetFormat(WAVEFORMATEX* pcfxFormat)
pcfxFormatWAVEFORMATEX*inプライマリバッファに設定する波形フォーマットを指定するWAVEFORMATEX構造体へのポインタ。
vtbl 15 HRESULT SetVolume(INT lVolume)
lVolumeINTin設定する音量(減衰、100分の1デシベル単位、0〜-10000)。
vtbl 16 HRESULT SetPan(INT lPan)
lPanINTin設定するパン(左右バランス、100分の1デシベル単位、-10000〜10000)。
vtbl 17 HRESULT SetFrequency(DWORD dwFrequency)
dwFrequencyDWORDin設定する再生周波数(Hz)。0でDSBFREQUENCY_ORIGINAL(原音周波数)。
vtbl 18 HRESULT Stop()
vtbl 19 HRESULT Unlock(void* pvAudioPtr1, DWORD dwAudioBytes1, void* pvAudioPtr2, DWORD dwAudioBytes2)
pvAudioPtr1void*inLockで取得した第1区画ポインタ。
dwAudioBytes1DWORDin第1区画に書き込んだバイト数。
pvAudioPtr2void*inoptionalLockで取得した第2区画ポインタ。無ければNULL。
dwAudioBytes2DWORDin第2区画に書き込んだバイト数。
vtbl 20 HRESULT Restore()

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDirectSoundBuffer "{279AFA85-4981-11CE-A521-0020AF0BE560}"
#usecom global IDirectSoundBuffer IID_IDirectSoundBuffer "{}"
#comfunc global IDirectSoundBuffer_GetCaps             3 var
#comfunc global IDirectSoundBuffer_GetCurrentPosition  4 var,var
#comfunc global IDirectSoundBuffer_GetFormat           5 var,int,var
#comfunc global IDirectSoundBuffer_GetVolume           6 var
#comfunc global IDirectSoundBuffer_GetPan              7 var
#comfunc global IDirectSoundBuffer_GetFrequency        8 var
#comfunc global IDirectSoundBuffer_GetStatus           9 var
#comfunc global IDirectSoundBuffer_Initialize          10 sptr,var
#comfunc global IDirectSoundBuffer_Lock                11 int,int,sptr,var,sptr,var,int
#comfunc global IDirectSoundBuffer_Play                12 int,int,int
#comfunc global IDirectSoundBuffer_SetCurrentPosition  13 int
#comfunc global IDirectSoundBuffer_SetFormat           14 var
#comfunc global IDirectSoundBuffer_SetVolume           15 int
#comfunc global IDirectSoundBuffer_SetPan              16 int
#comfunc global IDirectSoundBuffer_SetFrequency        17 int
#comfunc global IDirectSoundBuffer_Stop                18
#comfunc global IDirectSoundBuffer_Unlock              19 sptr,int,sptr,int
#comfunc global IDirectSoundBuffer_Restore             20
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。