IDvbServiceListDescriptor
COM公式ドキュメント
Digital Video Broadcast (DVB) のサービスリスト記述子からデータを取得するメソッドを実装します。サービスリスト記述子は DVB の network information table (NIT) または bouquet association table (BAT) の一部であり、サービスを service ID と種別ごとに列挙します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Digital Video Broadcast (DVB) のサービスリスト記述子を識別するタグを取得します。
| pbVal | BYTE* | out | サービスリスト記述子のタグを受け取ります。通常、サービスリスト記述子ではこの値は 0x41 です。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Digital Video Broadcast (DVB) のサービス記述子から descriptor_length フィールドの値を取得します。
| pbVal | BYTE* | out | 記述子の長さを受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Digital Video Broadcast (DVB) のサービスリスト記述子について、インデックス付けされたサービスレコードの数を取得します。
| pbVal | BYTE* | out | サービスレコードの数を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Digital Video Broadcast (DVB) のサービスリスト記述子から service_id フィールドの値を取得します。service_id フィールドの値は、MPEG-2 transport stream 内でサービスを一意に識別します。
| bRecordIndex | BYTE | in | サービスレコード番号を指定します。0 から始まるインデックスです。論理チャンネル記述子内のレコード数を取得するには、IDvbServiceListDescriptor::GetCountOfRecords メソッドを呼び出します。 |
| pwVal | WORD* | out | service_id フィールドの値を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Digital Video Broadcast (DVB) のサービス記述子から service_type フィールドの値を取得します。
| bRecordIndex | BYTE | in | サービスレコード番号を指定します。0 から始まるインデックスです。論理チャンネル記述子内のレコード数を取得するには、IDvbServiceListDescriptor::GetCountOfRecords メソッドを呼び出します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pbVal | 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_IDvbServiceListDescriptor "{05DB0D8F-6008-491A-ACD3-7090952707D0}" #usecom global IDvbServiceListDescriptor IID_IDvbServiceListDescriptor "{}" #comfunc global IDvbServiceListDescriptor_GetTag 3 var #comfunc global IDvbServiceListDescriptor_GetLength 4 var #comfunc global IDvbServiceListDescriptor_GetCountOfRecords 5 var #comfunc global IDvbServiceListDescriptor_GetRecordServiceId 6 int,var #comfunc global IDvbServiceListDescriptor_GetRecordServiceType 7 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IDvbServiceListDescriptor "{05DB0D8F-6008-491A-ACD3-7090952707D0}" #usecom global IDvbServiceListDescriptor IID_IDvbServiceListDescriptor "{}" #comfunc global IDvbServiceListDescriptor_GetTag 3 sptr #comfunc global IDvbServiceListDescriptor_GetLength 4 sptr #comfunc global IDvbServiceListDescriptor_GetCountOfRecords 5 sptr #comfunc global IDvbServiceListDescriptor_GetRecordServiceId 6 int,sptr #comfunc global IDvbServiceListDescriptor_GetRecordServiceType 7 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。