IBDA_FDC
COM公式ドキュメント
デバイスの Forward Data Channel (FDC) サービスへのアクセスを提供します。FDC は、構成メッセージや制御メッセージを伝送する帯域外チャネルです。
解説(Remarks)
このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IBDA_FDC)。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Forward Data Channel (FDC) ストリームのチューニング状態を取得します。
| CurrentBitrate | DWORD* | out | FDC ストリームの想定ビットレートを受け取ります (単位: キロビット/秒 (kbps))。 |
| CarrierLock | BOOL* | out | キャリアロック状態を受け取ります。 |
| CurrentFrequency | DWORD* | out | FDC チューナーの現在の周波数を受け取ります (単位: kHz)。 |
| CurrentSpectrumInversion | BOOL* | out | FDC ストリームの想定スペクトル反転状態を受け取ります。 |
| CurrentPIDList | LPWSTR* | out | パケット識別子 (PID) のカンマ区切りリストを受け取ります。呼び出し元は SysFreeString を呼び出して文字列を解放する必要があります。 |
| CurrentTIDList | LPWSTR* | out | テーブル識別子 (TID) のカンマ区切りリストを受け取ります。呼び出し元は SysFreeString を呼び出して文字列を解放する必要があります。 |
| Overflow | BOOL* | out | オーバーフロー状態を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
テーブル識別子 (TID) でフィルター処理された MPEG-2 テーブルセクションを要求します。
| TableIDs | LPWSTR | in | TID のカンマ区切りリスト。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
1 つ以上のパケット識別子 (PID) を MPEG フローに追加します。
| PidsToAdd | LPWSTR | in | PID のカンマ区切りリスト。 |
| RemainingFilterEntries | DWORD* | out | デバイス上に残っている MPEG フローの数を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このコマンドを実行すると、デバイスは new_flow_req Application Protocol Data Unit (APDU) を送信します。
1 つ以上のパケット識別子 (PID) を MPEG フローから削除します。
| PidsToRemove | LPWSTR | in | 削除する PID のカンマ区切りリスト。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このコマンドを実行すると、デバイスは delete_flow_req Application Protocol Data Unit (APDU) を送信します。
1 つ以上のテーブル識別子 (TID) を MPEG フローに追加します。
| TidsToAdd | LPWSTR | in | TID のカンマ区切りリスト。 |
| CurrentTidList | LPWSTR* | out | 現在の TID のカンマ区切りリストを受け取ります。呼び出し元は SysFreeString を呼び出して文字列を解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
1 つ以上のテーブル識別子 (TID) を MPEG フローから削除します。
| TidsToRemove | LPWSTR | in | 削除する TID のカンマ区切りリスト。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
最新のテーブルセクションを取得します。
| Pid | DWORD* | out | テーブルのパケット識別子 (PID) を受け取ります。 |
| MaxBufferSize | DWORD | in | SecBuffer 配列のサイズ (単位: バイト)。 |
| ActualSize | DWORD* | out | このメソッドが SecBuffer 配列にコピーしたバイト数を受け取ります。 |
| SecBuffer | BYTE* | out | テーブルセクションを受け取る、呼び出し元が割り当てたバイト配列。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IBDA_FDC "{138ADC7E-58AE-437F-B0B4-C9FE19D5B4AC}" #usecom global IBDA_FDC IID_IBDA_FDC "{}" #comfunc global IBDA_FDC_GetStatus 3 var,var,var,var,var,var,var #comfunc global IBDA_FDC_RequestTables 4 wstr #comfunc global IBDA_FDC_AddPid 5 wstr,var #comfunc global IBDA_FDC_RemovePid 6 wstr #comfunc global IBDA_FDC_AddTid 7 wstr,var #comfunc global IBDA_FDC_RemoveTid 8 wstr #comfunc global IBDA_FDC_GetTableSection 9 var,int,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IBDA_FDC "{138ADC7E-58AE-437F-B0B4-C9FE19D5B4AC}" #usecom global IBDA_FDC IID_IBDA_FDC "{}" #comfunc global IBDA_FDC_GetStatus 3 sptr,sptr,sptr,sptr,sptr,sptr,sptr #comfunc global IBDA_FDC_RequestTables 4 wstr #comfunc global IBDA_FDC_AddPid 5 wstr,sptr #comfunc global IBDA_FDC_RemovePid 6 wstr #comfunc global IBDA_FDC_AddTid 7 wstr,sptr #comfunc global IBDA_FDC_RemoveTid 8 wstr #comfunc global IBDA_FDC_GetTableSection 9 sptr,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。