Win32 API 日本語リファレンス
ホームMedia.DirectShow › IBDA_FDC

IBDA_FDC

COM
IID138adc7e-58ae-437f-b0b4-c9fe19d5b4ac継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

デバイスの Forward Data Channel (FDC) サービスへのアクセスを提供します。FDC は、構成メッセージや制御メッセージを伝送する帯域外チャネルです。

解説(Remarks)

このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IBDA_FDC)

メソッド 7

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

vtbl 3 HRESULT GetStatus(DWORD* CurrentBitrate, BOOL* CarrierLock, DWORD* CurrentFrequency, BOOL* CurrentSpectrumInversion, LPWSTR* CurrentPIDList, LPWSTR* CurrentTIDList, BOOL* Overflow)

Forward Data Channel (FDC) ストリームのチューニング状態を取得します。

CurrentBitrateDWORD*outFDC ストリームの想定ビットレートを受け取ります (単位: キロビット/秒 (kbps))。
CarrierLockBOOL*outキャリアロック状態を受け取ります。
CurrentFrequencyDWORD*outFDC チューナーの現在の周波数を受け取ります (単位: kHz)。
CurrentSpectrumInversionBOOL*outFDC ストリームの想定スペクトル反転状態を受け取ります。
CurrentPIDListLPWSTR*outパケット識別子 (PID) のカンマ区切りリストを受け取ります。呼び出し元は SysFreeString を呼び出して文字列を解放する必要があります。
CurrentTIDListLPWSTR*outテーブル識別子 (TID) のカンマ区切りリストを受け取ります。呼び出し元は SysFreeString を呼び出して文字列を解放する必要があります。
OverflowBOOL*outオーバーフロー状態を受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 4 HRESULT RequestTables(LPWSTR TableIDs)

テーブル識別子 (TID) でフィルター処理された MPEG-2 テーブルセクションを要求します。

TableIDsLPWSTRinTID のカンマ区切りリスト。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT AddPid(LPWSTR PidsToAdd, DWORD* RemainingFilterEntries)

1 つ以上のパケット識別子 (PID) を MPEG フローに追加します。

PidsToAddLPWSTRinPID のカンマ区切りリスト。
RemainingFilterEntriesDWORD*outデバイス上に残っている MPEG フローの数を受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このコマンドを実行すると、デバイスは new_flow_req Application Protocol Data Unit (APDU) を送信します。

vtbl 6 HRESULT RemovePid(LPWSTR PidsToRemove)

1 つ以上のパケット識別子 (PID) を MPEG フローから削除します。

PidsToRemoveLPWSTRin削除する PID のカンマ区切りリスト。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このコマンドを実行すると、デバイスは delete_flow_req Application Protocol Data Unit (APDU) を送信します。

vtbl 7 HRESULT AddTid(LPWSTR TidsToAdd, LPWSTR* CurrentTidList)

1 つ以上のテーブル識別子 (TID) を MPEG フローに追加します。

TidsToAddLPWSTRinTID のカンマ区切りリスト。
CurrentTidListLPWSTR*out現在の TID のカンマ区切りリストを受け取ります。呼び出し元は SysFreeString を呼び出して文字列を解放する必要があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 8 HRESULT RemoveTid(LPWSTR TidsToRemove)

1 つ以上のテーブル識別子 (TID) を MPEG フローから削除します。

TidsToRemoveLPWSTRin削除する TID のカンマ区切りリスト。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 9 HRESULT GetTableSection(DWORD* Pid, DWORD MaxBufferSize, DWORD* ActualSize, BYTE* SecBuffer)

最新のテーブルセクションを取得します。

PidDWORD*outテーブルのパケット識別子 (PID) を受け取ります。
MaxBufferSizeDWORDinSecBuffer 配列のサイズ (単位: バイト)。
ActualSizeDWORD*outこのメソッドが SecBuffer 配列にコピーしたバイト数を受け取ります。
SecBufferBYTE*outテーブルセクションを受け取る、呼び出し元が割り当てたバイト配列。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 方式にも切替可。