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

IDirectSoundCaptureBuffer

COM
IIDb0210782-89cd-11d0-af08-00a0c925cd16継承元IUnknown自前メソッド開始 vtbl3

メソッド 9

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

vtbl 3 HRESULT GetCaps(DSCBCAPS* pDSCBCaps)
pDSCBCapsDSCBCAPS*outこのキャプチャバッファの能力情報を受け取るDSCBCAPS構造体へのポインタ。dwSizeを事前設定する。
vtbl 4 HRESULT GetCurrentPosition(DWORD* pdwCapturePosition, DWORD* pdwReadPosition)
pdwCapturePositionDWORD*outoptionalハードウェアが現在書き込み中の位置(バイトオフセット)を受け取るポインタ。NULL可。
pdwReadPositionDWORD*outoptional安全に読み出し可能な位置(バイトオフセット)を受け取るポインタ。NULL可。
vtbl 5 HRESULT GetFormat(WAVEFORMATEX* pwfxFormat, DWORD dwSizeAllocated, DWORD* pdwSizeWritten)
pwfxFormatWAVEFORMATEX*outoptionalキャプチャバッファの波形フォーマットを受け取るWAVEFORMATEXへのポインタ。サイズ問い合わせ時はNULL。
dwSizeAllocatedDWORDinpwfxFormatバッファに割り当てたサイズ(バイト)。
pdwSizeWrittenDWORD*outoptional実際に書き込まれた、または必要なフォーマット情報のバイト数を受け取るポインタ。
vtbl 6 HRESULT GetStatus(DWORD* pdwStatus)
pdwStatusDWORD*outキャプチャバッファの状態フラグ(DSCBSTATUS_CAPTURING/LOOPING)を受け取るポインタ。
vtbl 7 HRESULT Initialize(IDirectSoundCapture* pDirectSoundCapture, DSCBUFFERDESC* pcDSCBufferDesc)
pDirectSoundCaptureIDirectSoundCapture*inこのバッファを所有するIDirectSoundCaptureオブジェクトへのポインタ。
pcDSCBufferDescDSCBUFFERDESC*inキャプチャバッファの形式と能力を指定するDSCBUFFERDESC構造体へのポインタ。
vtbl 8 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ロック動作フラグ(DSCBLOCK_ENTIREBUFFER)。
vtbl 9 HRESULT Start(DWORD dwFlags)
dwFlagsDWORDinキャプチャ開始フラグ(DSCBSTART_LOOPINGで循環キャプチャ)。
vtbl 10 HRESULT Stop()
vtbl 11 HRESULT Unlock(void* pvAudioPtr1, DWORD dwAudioBytes1, void* pvAudioPtr2, DWORD dwAudioBytes2)
pvAudioPtr1void*inLockで取得した第1区画ポインタ。
dwAudioBytes1DWORDin第1区画から読み出したバイト数。
pvAudioPtr2void*inoptionalLockで取得した第2区画ポインタ。無ければNULL。
dwAudioBytes2DWORDin第2区画から読み出したバイト数。

HSP用 COM定義

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

出力引数:
#define global IID_IDirectSoundCaptureBuffer "{B0210782-89CD-11D0-AF08-00A0C925CD16}"
#usecom global IDirectSoundCaptureBuffer IID_IDirectSoundCaptureBuffer "{}"
#comfunc global IDirectSoundCaptureBuffer_GetCaps             3 var
#comfunc global IDirectSoundCaptureBuffer_GetCurrentPosition  4 var,var
#comfunc global IDirectSoundCaptureBuffer_GetFormat           5 var,int,var
#comfunc global IDirectSoundCaptureBuffer_GetStatus           6 var
#comfunc global IDirectSoundCaptureBuffer_Initialize          7 sptr,var
#comfunc global IDirectSoundCaptureBuffer_Lock                8 int,int,sptr,var,sptr,var,int
#comfunc global IDirectSoundCaptureBuffer_Start               9 int
#comfunc global IDirectSoundCaptureBuffer_Stop                10
#comfunc global IDirectSoundCaptureBuffer_Unlock              11 sptr,int,sptr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。