ホーム › Media.Audio.DirectMusic › IDirectMusicPort
IDirectMusicPort
COMメソッド 17
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT PlayBuffer(IDirectMusicBuffer* pBuffer)
| pBuffer | IDirectMusicBuffer* | in | 再生するMIDIメッセージを格納したIDirectMusicBufferへのポインタ。 |
| hEvent | HANDLE | in | 入力データ受信可能時にシグナルされる通知イベントハンドル。解除する場合はNULL。 |
vtbl 5 HRESULT Read(IDirectMusicBuffer* pBuffer)
| pBuffer | IDirectMusicBuffer* | in | 受信した入力メッセージを書き込む先のIDirectMusicBufferへのポインタ。 |
vtbl 6 HRESULT DownloadInstrument(IDirectMusicInstrument* pInstrument, IDirectMusicDownloadedInstrument** ppDownloadedInstrument, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges)
| pInstrument | IDirectMusicInstrument* | in | ポートへダウンロードする楽器を表すIDirectMusicInstrumentへのポインタ。 |
| ppDownloadedInstrument | IDirectMusicDownloadedInstrument** | out | ダウンロード済み楽器を表すIDirectMusicDownloadedInstrumentの受け取り先。要Release。 |
| pNoteRanges | DMUS_NOTERANGE* | inout | ダウンロード対象を限定するノート範囲を記述するDMUS_NOTERANGE配列。全体なら無視可。 |
| dwNumNoteRanges | DWORD | in | pNoteRangesの要素数。0で全範囲をダウンロード。 |
vtbl 7 HRESULT UnloadInstrument(IDirectMusicDownloadedInstrument* pDownloadedInstrument)
| pDownloadedInstrument | IDirectMusicDownloadedInstrument* | in | ポートからアンロードするダウンロード済み楽器へのポインタ。 |
vtbl 8 HRESULT GetLatencyClock(IReferenceClock** ppClock)
| ppClock | IReferenceClock** | out | ポートの再生遅延を反映したレイテンシクロックのIReferenceClockの受け取り先。要Release。 |
vtbl 9 HRESULT GetRunningStats(DMUS_SYNTHSTATS* pStats)
| pStats | DMUS_SYNTHSTATS* | inout | ポートの稼働統計(CPU使用率やボイス数など)を受け取るDMUS_SYNTHSTATS構造体へのポインタ。 |
vtbl 10 HRESULT Compact()
vtbl 11 HRESULT GetCaps(DMUS_PORTCAPS* pPortCaps)
| pPortCaps | DMUS_PORTCAPS* | inout | ポートの能力情報を受け取るDMUS_PORTCAPS構造体へのポインタ。dwSizeを事前設定する。 |
vtbl 12 HRESULT DeviceIoControl(DWORD dwIoControlCode, void* lpInBuffer, DWORD nInBufferSize, void* lpOutBuffer, DWORD nOutBufferSize, DWORD* lpBytesReturned, OVERLAPPED* lpOverlapped)
| dwIoControlCode | DWORD | in | デバイスへ送る制御コード(IOCTL)。 |
| lpInBuffer | void* | inout | 入力データバッファへのポインタ。不要ならNULL。 |
| nInBufferSize | DWORD | in | lpInBufferのサイズ(バイト)。 |
| lpOutBuffer | void* | inout | 出力データを受け取るバッファへのポインタ。不要ならNULL。 |
| nOutBufferSize | DWORD | in | lpOutBufferのサイズ(バイト)。 |
| lpBytesReturned | DWORD* | inout | 実際に返された出力バイト数を受け取るポインタ。 |
| lpOverlapped | OVERLAPPED* | inout | 非同期I/O用のOVERLAPPED構造体へのポインタ。同期なら NULL。 |
| dwChannelGroups | DWORD | in | ポートに割り当てるチャンネルグループ数(各16チャンネル)。 |
| pdwChannelGroups | DWORD* | inout | 現在割り当てられているチャンネルグループ数を受け取るポインタ。 |
| fActive | BOOL | in | ポートを有効化(TRUE)するか無効化(FALSE)するかを指定するブール値。 |
| dwChannelGroup | DWORD | in | 対象チャンネルグループ(1起点)。 |
| dwChannel | DWORD | in | 対象チャンネル(0起点、0〜15)。 |
| dwPriority | DWORD | in | 設定するボイス割り当て優先度。値が高いほど優先される。 |
| dwChannelGroup | DWORD | in | 対象チャンネルグループ(1起点)。 |
| dwChannel | DWORD | in | 対象チャンネル(0起点、0〜15)。 |
| pdwPriority | DWORD* | inout | 現在の優先度を受け取るポインタ。 |
vtbl 18 HRESULT SetDirectSound(IDirectSound* pDirectSound, IDirectSoundBuffer* pDirectSoundBuffer)
| pDirectSound | IDirectSound* | in | 出力に使用するIDirectSoundオブジェクト。NULLで既定を使用。 |
| pDirectSoundBuffer | IDirectSoundBuffer* | in | 出力先となるIDirectSoundBuffer。NULLで既定バッファを使用。 |
vtbl 19 HRESULT GetFormat(WAVEFORMATEX* pWaveFormatEx, DWORD* pdwWaveFormatExSize, DWORD* pdwBufferSize)
| pWaveFormatEx | WAVEFORMATEX* | inout | ポートの出力波形フォーマットを受け取るWAVEFORMATEX構造体へのポインタ。サイズ問い合わせ時はNULL。 |
| pdwWaveFormatExSize | DWORD* | inout | pWaveFormatExバッファのサイズを入出力するポインタ。 |
| pdwBufferSize | DWORD* | 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 指定が可能。#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,sptr,int #comfunc global IDirectMusicPort_UnloadInstrument 7 sptr #comfunc global IDirectMusicPort_GetLatencyClock 8 sptr #comfunc global IDirectMusicPort_GetRunningStats 9 sptr #comfunc global IDirectMusicPort_Compact 10 #comfunc global IDirectMusicPort_GetCaps 11 sptr #comfunc global IDirectMusicPort_DeviceIoControl 12 int,sptr,int,sptr,int,sptr,sptr #comfunc global IDirectMusicPort_SetNumChannelGroups 13 int #comfunc global IDirectMusicPort_GetNumChannelGroups 14 sptr #comfunc global IDirectMusicPort_Activate 15 int #comfunc global IDirectMusicPort_SetChannelPriority 16 int,int,int #comfunc global IDirectMusicPort_GetChannelPriority 17 int,int,sptr #comfunc global IDirectMusicPort_SetDirectSound 18 sptr,sptr #comfunc global IDirectMusicPort_GetFormat 19 sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。