ホーム › Media.Audio.DirectSound › IDirectSoundCaptureBuffer
IDirectSoundCaptureBuffer
COMメソッド 9
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
| pDSCBCaps | DSCBCAPS* | out | このキャプチャバッファの能力情報を受け取るDSCBCAPS構造体へのポインタ。dwSizeを事前設定する。 |
| pdwCapturePosition | DWORD* | outoptional | ハードウェアが現在書き込み中の位置(バイトオフセット)を受け取るポインタ。NULL可。 |
| pdwReadPosition | DWORD* | outoptional | 安全に読み出し可能な位置(バイトオフセット)を受け取るポインタ。NULL可。 |
vtbl 5 HRESULT GetFormat(WAVEFORMATEX* pwfxFormat, DWORD dwSizeAllocated, DWORD* pdwSizeWritten)
| pwfxFormat | WAVEFORMATEX* | outoptional | キャプチャバッファの波形フォーマットを受け取るWAVEFORMATEXへのポインタ。サイズ問い合わせ時はNULL。 |
| dwSizeAllocated | DWORD | in | pwfxFormatバッファに割り当てたサイズ(バイト)。 |
| pdwSizeWritten | DWORD* | outoptional | 実際に書き込まれた、または必要なフォーマット情報のバイト数を受け取るポインタ。 |
| pdwStatus | DWORD* | out | キャプチャバッファの状態フラグ(DSCBSTATUS_CAPTURING/LOOPING)を受け取るポインタ。 |
vtbl 7 HRESULT Initialize(IDirectSoundCapture* pDirectSoundCapture, DSCBUFFERDESC* pcDSCBufferDesc)
| pDirectSoundCapture | IDirectSoundCapture* | in | このバッファを所有するIDirectSoundCaptureオブジェクトへのポインタ。 |
| pcDSCBufferDesc | DSCBUFFERDESC* | in | キャプチャバッファの形式と能力を指定するDSCBUFFERDESC構造体へのポインタ。 |
vtbl 8 HRESULT Lock(DWORD dwOffset, DWORD dwBytes, void** ppvAudioPtr1, DWORD* pdwAudioBytes1, void** ppvAudioPtr2, DWORD* pdwAudioBytes2, DWORD dwFlags)
| dwOffset | DWORD | in | ロックを開始するバッファ内バイトオフセット。 |
| dwBytes | DWORD | in | ロックするバイト数。 |
| ppvAudioPtr1 | void** | out | ロックされた第1区画の先頭ポインタの受け取り先。 |
| pdwAudioBytes1 | DWORD* | out | 第1区画のバイト数を受け取るポインタ。 |
| ppvAudioPtr2 | void** | outoptional | ラップアラウンドした第2区画の先頭ポインタの受け取り先。無ければNULL。 |
| pdwAudioBytes2 | DWORD* | outoptional | 第2区画のバイト数を受け取るポインタ。 |
| dwFlags | DWORD | in | ロック動作フラグ(DSCBLOCK_ENTIREBUFFER)。 |
| dwFlags | DWORD | in | キャプチャ開始フラグ(DSCBSTART_LOOPINGで循環キャプチャ)。 |
vtbl 10 HRESULT Stop()
vtbl 11 HRESULT Unlock(void* pvAudioPtr1, DWORD dwAudioBytes1, void* pvAudioPtr2, DWORD dwAudioBytes2)
| pvAudioPtr1 | void* | in | Lockで取得した第1区画ポインタ。 |
| dwAudioBytes1 | DWORD | in | 第1区画から読み出したバイト数。 |
| pvAudioPtr2 | void* | inoptional | Lockで取得した第2区画ポインタ。無ければNULL。 |
| dwAudioBytes2 | DWORD | in | 第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 指定が可能。#define global IID_IDirectSoundCaptureBuffer "{B0210782-89CD-11D0-AF08-00A0C925CD16}" #usecom global IDirectSoundCaptureBuffer IID_IDirectSoundCaptureBuffer "{}" #comfunc global IDirectSoundCaptureBuffer_GetCaps 3 sptr #comfunc global IDirectSoundCaptureBuffer_GetCurrentPosition 4 sptr,sptr #comfunc global IDirectSoundCaptureBuffer_GetFormat 5 sptr,int,sptr #comfunc global IDirectSoundCaptureBuffer_GetStatus 6 sptr #comfunc global IDirectSoundCaptureBuffer_Initialize 7 sptr,sptr #comfunc global IDirectSoundCaptureBuffer_Lock 8 int,int,sptr,sptr,sptr,sptr,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が無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。