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

IDirectMusicSynthSink

COM
IID09823663-5c85-11d2-afa6-00aa0024d8b6継承元IUnknown自前メソッド開始 vtbl3

メソッド 8

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

vtbl 3 HRESULT Init(IDirectMusicSynth* pSynth)
pSynthIDirectMusicSynth*inこのシンクに接続するIDirectMusicSynthへのポインタ。NULLで切断する。
vtbl 4 HRESULT SetMasterClock(IReferenceClock* pClock)
pClockIReferenceClock*inシンクが基準とするマスタークロックのIReferenceClockへのポインタ。
vtbl 5 HRESULT GetLatencyClock(IReferenceClock** ppClock)
ppClockIReferenceClock**outシンクの出力レイテンシを反映したIReferenceClockの受け取り先。要Release。
vtbl 6 HRESULT Activate(BOOL fEnable)
fEnableBOOLinシンクを有効化(TRUE)するか無効化(FALSE)するかを指定するブール値。
vtbl 7 HRESULT SampleToRefTime(LONGLONG llSampleTime, LONGLONG* prfTime)
llSampleTimeLONGLONGin変換元のサンプル位置(サンプル数)。
prfTimeLONGLONG*inout対応する基準時刻(REFERENCE_TIME)を受け取るポインタ。
vtbl 8 HRESULT RefTimeToSample(LONGLONG rfTime, LONGLONG* pllSampleTime)
rfTimeLONGLONGin変換元の基準時刻(REFERENCE_TIME)。
pllSampleTimeLONGLONG*inout対応するサンプル位置を受け取るポインタ。
vtbl 9 HRESULT SetDirectSound(IDirectSound* pDirectSound, IDirectSoundBuffer* pDirectSoundBuffer)
pDirectSoundIDirectSound*in出力に使用するIDirectSoundオブジェクト。NULLで既定を使用。
pDirectSoundBufferIDirectSoundBuffer*in出力先のIDirectSoundBuffer。NULLで既定バッファを使用。
vtbl 10 HRESULT GetDesiredBufferSize(DWORD* pdwBufferSizeInSamples)
pdwBufferSizeInSamplesDWORD*inoutシンクが望む出力バッファサイズ(サンプル単位)を受け取るポインタ。

HSP用 COM定義

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

出力引数:
#define global IID_IDirectMusicSynthSink "{09823663-5C85-11D2-AFA6-00AA0024D8B6}"
#usecom global IDirectMusicSynthSink IID_IDirectMusicSynthSink "{AEC17CE3-A514-11D1-AFA6-00AA0024D8B6}"
#comfunc global IDirectMusicSynthSink_Init                  3 sptr
#comfunc global IDirectMusicSynthSink_SetMasterClock        4 sptr
#comfunc global IDirectMusicSynthSink_GetLatencyClock       5 sptr
#comfunc global IDirectMusicSynthSink_Activate              6 int
#comfunc global IDirectMusicSynthSink_SampleToRefTime       7 int64,var
#comfunc global IDirectMusicSynthSink_RefTimeToSample       8 int64,var
#comfunc global IDirectMusicSynthSink_SetDirectSound        9 sptr,sptr
#comfunc global IDirectMusicSynthSink_GetDesiredBufferSize  10 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。