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

IDirectMusicPort

COM
IID08f2d8c9-37c2-11d2-b9f9-0000f875ac12継承元IUnknown自前メソッド開始 vtbl3

メソッド 17

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

vtbl 3 HRESULT PlayBuffer(IDirectMusicBuffer* pBuffer)
pBufferIDirectMusicBuffer*in再生するMIDIメッセージを格納したIDirectMusicBufferへのポインタ。
vtbl 4 HRESULT SetReadNotificationHandle(HANDLE hEvent)
hEventHANDLEin入力データ受信可能時にシグナルされる通知イベントハンドル。解除する場合はNULL。
vtbl 5 HRESULT Read(IDirectMusicBuffer* pBuffer)
pBufferIDirectMusicBuffer*in受信した入力メッセージを書き込む先のIDirectMusicBufferへのポインタ。
vtbl 6 HRESULT DownloadInstrument(IDirectMusicInstrument* pInstrument, IDirectMusicDownloadedInstrument** ppDownloadedInstrument, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges)
pInstrumentIDirectMusicInstrument*inポートへダウンロードする楽器を表すIDirectMusicInstrumentへのポインタ。
ppDownloadedInstrumentIDirectMusicDownloadedInstrument**outダウンロード済み楽器を表すIDirectMusicDownloadedInstrumentの受け取り先。要Release。
pNoteRangesDMUS_NOTERANGE*inoutダウンロード対象を限定するノート範囲を記述するDMUS_NOTERANGE配列。全体なら無視可。
dwNumNoteRangesDWORDinpNoteRangesの要素数。0で全範囲をダウンロード。
vtbl 7 HRESULT UnloadInstrument(IDirectMusicDownloadedInstrument* pDownloadedInstrument)
pDownloadedInstrumentIDirectMusicDownloadedInstrument*inポートからアンロードするダウンロード済み楽器へのポインタ。
vtbl 8 HRESULT GetLatencyClock(IReferenceClock** ppClock)
ppClockIReferenceClock**outポートの再生遅延を反映したレイテンシクロックのIReferenceClockの受け取り先。要Release。
vtbl 9 HRESULT GetRunningStats(DMUS_SYNTHSTATS* pStats)
pStatsDMUS_SYNTHSTATS*inoutポートの稼働統計(CPU使用率やボイス数など)を受け取るDMUS_SYNTHSTATS構造体へのポインタ。
vtbl 10 HRESULT Compact()
vtbl 11 HRESULT GetCaps(DMUS_PORTCAPS* pPortCaps)
pPortCapsDMUS_PORTCAPS*inoutポートの能力情報を受け取るDMUS_PORTCAPS構造体へのポインタ。dwSizeを事前設定する。
vtbl 12 HRESULT DeviceIoControl(DWORD dwIoControlCode, void* lpInBuffer, DWORD nInBufferSize, void* lpOutBuffer, DWORD nOutBufferSize, DWORD* lpBytesReturned, OVERLAPPED* lpOverlapped)
dwIoControlCodeDWORDinデバイスへ送る制御コード(IOCTL)。
lpInBuffervoid*inout入力データバッファへのポインタ。不要ならNULL。
nInBufferSizeDWORDinlpInBufferのサイズ(バイト)。
lpOutBuffervoid*inout出力データを受け取るバッファへのポインタ。不要ならNULL。
nOutBufferSizeDWORDinlpOutBufferのサイズ(バイト)。
lpBytesReturnedDWORD*inout実際に返された出力バイト数を受け取るポインタ。
lpOverlappedOVERLAPPED*inout非同期I/O用のOVERLAPPED構造体へのポインタ。同期なら NULL。
vtbl 13 HRESULT SetNumChannelGroups(DWORD dwChannelGroups)
dwChannelGroupsDWORDinポートに割り当てるチャンネルグループ数(各16チャンネル)。
vtbl 14 HRESULT GetNumChannelGroups(DWORD* pdwChannelGroups)
pdwChannelGroupsDWORD*inout現在割り当てられているチャンネルグループ数を受け取るポインタ。
vtbl 15 HRESULT Activate(BOOL fActive)
fActiveBOOLinポートを有効化(TRUE)するか無効化(FALSE)するかを指定するブール値。
vtbl 16 HRESULT SetChannelPriority(DWORD dwChannelGroup, DWORD dwChannel, DWORD dwPriority)
dwChannelGroupDWORDin対象チャンネルグループ(1起点)。
dwChannelDWORDin対象チャンネル(0起点、0〜15)。
dwPriorityDWORDin設定するボイス割り当て優先度。値が高いほど優先される。
vtbl 17 HRESULT GetChannelPriority(DWORD dwChannelGroup, DWORD dwChannel, DWORD* pdwPriority)
dwChannelGroupDWORDin対象チャンネルグループ(1起点)。
dwChannelDWORDin対象チャンネル(0起点、0〜15)。
pdwPriorityDWORD*inout現在の優先度を受け取るポインタ。
vtbl 18 HRESULT SetDirectSound(IDirectSound* pDirectSound, IDirectSoundBuffer* pDirectSoundBuffer)
pDirectSoundIDirectSound*in出力に使用するIDirectSoundオブジェクト。NULLで既定を使用。
pDirectSoundBufferIDirectSoundBuffer*in出力先となるIDirectSoundBuffer。NULLで既定バッファを使用。
vtbl 19 HRESULT GetFormat(WAVEFORMATEX* pWaveFormatEx, DWORD* pdwWaveFormatExSize, DWORD* pdwBufferSize)
pWaveFormatExWAVEFORMATEX*inoutポートの出力波形フォーマットを受け取るWAVEFORMATEX構造体へのポインタ。サイズ問い合わせ時はNULL。
pdwWaveFormatExSizeDWORD*inoutpWaveFormatExバッファのサイズを入出力するポインタ。
pdwBufferSizeDWORD*inout推奨される再生バッファサイズ(バイト)を受け取るポインタ。NULL可。

HSP用 COM定義

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

出力引数:
#define global IID_IDirectMusicPort "{08F2D8C9-37C2-11D2-B9F9-0000F875AC12}"
#usecom global IDirectMusicPort IID_IDirectMusicPort "{}"
#comfunc global IDirectMusicPort_PlayBuffer                 3 sptr
#comfunc global IDirectMusicPort_SetReadNotificationHandle  4 sptr
#comfunc global IDirectMusicPort_Read                       5 sptr
#comfunc global IDirectMusicPort_DownloadInstrument         6 sptr,sptr,var,int
#comfunc global IDirectMusicPort_UnloadInstrument           7 sptr
#comfunc global IDirectMusicPort_GetLatencyClock            8 sptr
#comfunc global IDirectMusicPort_GetRunningStats            9 var
#comfunc global IDirectMusicPort_Compact                    10
#comfunc global IDirectMusicPort_GetCaps                    11 var
#comfunc global IDirectMusicPort_DeviceIoControl            12 int,sptr,int,sptr,int,var,var
#comfunc global IDirectMusicPort_SetNumChannelGroups        13 int
#comfunc global IDirectMusicPort_GetNumChannelGroups        14 var
#comfunc global IDirectMusicPort_Activate                   15 int
#comfunc global IDirectMusicPort_SetChannelPriority         16 int,int,int
#comfunc global IDirectMusicPort_GetChannelPriority         17 int,int,var
#comfunc global IDirectMusicPort_SetDirectSound             18 sptr,sptr
#comfunc global IDirectMusicPort_GetFormat                  19 var,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。