IGuideData
COM公式ドキュメント
IGuideData インターフェースは、BDA MPEG-2 Transport Information Filter (TIF) によって公開されます。これによりクライアントは、MPEG-2 トランスポートストリームからサービス情報を取得できます。ガイドストアローダーを作成する場合は、このインターフェースを使用してください。
解説(Remarks)
TIF は、サービス、番組、およびスケジュールエントリのサービス情報を収集します。サービスはチャンネルに相当し、番組はテレビ番組(「イベント」とも呼ばれます)であり、スケジュールエントリは特定のサービス上の特定の時刻に発生するイベントです。
TIF は、各番組およびスケジュールエントリについて、多重化内でその要素を一意に識別する文字列を作成します。GetGuideProgramIDs メソッドと GetScheduleEntryIDs メソッドは、これらの識別子のリストを返します。この識別子を GetProgramProperties メソッドや GetScheduleEntryProperties メソッドに渡すことで、特定の要素に関する追加のプロパティを取得できます。
このインターフェースのインターフェース識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IGuideData)。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetServices メソッドは、チューニングスペースで利用可能なすべてのサービスを表すチューン要求のコレクションを取得します。
| ppEnumTuneRequests | IEnumTuneRequests** | out | IEnumTuneRequests インターフェースポインターを受け取る変数へのポインター。このインターフェースを使用してプロパティを列挙します。呼び出し元はインターフェースを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
このメソッドは、service descriptor table に列挙されているすべてのサービスを列挙するために使用します。返されるコレクション内の各チューン要求には、そのサービスのロケーターデータが含まれます。サービスに関する詳細情報を取得するには、ITuneRequest ポインターを IGuideData::GetServiceProperties メソッドに渡します。
TIF がトランスポートストリーム内の PSI テーブルからサービス情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ServiceChanged イベントが発生するのを待つ必要があります。
GetServiceProperties メソッドは、指定されたサービスのプロパティを取得します。
| pTuneRequest | ITuneRequest* | in | 有効なチューン要求の ITuneRequest インターフェースへのポインター。チューン要求のリストを取得するには、IGuideData::GetServices メソッドを呼び出します。 |
| ppEnumProperties | IEnumGuideDataProperties** | out | IEnumGuideDataProperties インターフェースポインターを受け取る変数へのポインター。このインターフェースを使用してプロパティを列挙します。呼び出し元はインターフェースを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
返されるコレクションには、次のプロパティが含まれます。
| プロパティ | 説明 |
|---|---|
| Description.ID | サービスの一意な識別子。 |
| Description.Name | チャンネルラインナップ内でこのサービスに使用する既定の名前。 |
| Provider.Name | サービスプロバイダーの名前。 |
| Provider.NetworkName | サービスが提供されるネットワークの名前。 |
TIF がトランスポートストリーム内の PSI テーブルからサービス情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ServiceChanged イベントが発生するのを待つ必要があります。
GetGuideProgramIDs メソッドは、すべてのトランスポートストリームに含まれるすべての番組の一意な識別子のリストを返します。
| pEnumPrograms | IEnumVARIANT** | out | IEnumVARIANT インターフェースへのポインターを受け取ります。このインターフェースを使用してコレクションを列挙します。呼び出し元はインターフェースを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
TIF がトランスポートストリーム内の PSI テーブルから番組情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ProgramChanged イベントが発生するのを待つ必要があります。
コレクション内の各 VARIANT 型には、多重化内の 1 つの番組を一意に識別する BSTR が含まれます。番組に関する詳細情報を取得するには、VARIANT を IGuideData::GetProgramProperties メソッドに渡します。
返される IEnumVARIANT インターフェースはスレッドセーフではありません。クライアントは、複数のスレッドからこのインターフェースのメソッドを呼び出さないでください。
GetProgramProperties メソッドは、指定された番組のプロパティを取得します。
| varProgramDescriptionID | VARIANT | in | 番組の一意な識別子を指定します。番組識別子のリストを取得するには、IGuideData::GetGuideProgramIDs メソッドを呼び出します。 |
| ppEnumProperties | IEnumGuideDataProperties** | out | IEnumGuideDataProperties インターフェースポインターを受け取る変数へのポインター。このインターフェースを使用してプロパティを列挙します。呼び出し元はインターフェースを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
返されるコレクションには、次のプロパティが含まれます。
| プロパティ | 説明 |
|---|---|
| Description.ID | 番組の一意な識別子。 |
| Description.One Sentence | 番組の説明。 |
| Description.Title | 番組の名前。 |
TIF がトランスポートストリーム内の PSI テーブルから番組情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ProgramChanged イベントが発生するのを待つ必要があります。
GetScheduleEntryIDs メソッドは、すべてのトランスポートストリームに含まれるすべてのスケジュールエントリの一意な識別子のリストを返します。
| pEnumScheduleEntries | IEnumVARIANT** | out | IEnumVARIANT インターフェースへのポインターを受け取ります。このインターフェースを使用してコレクションを列挙します。呼び出し元はインターフェースを解放する必要があります。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
TIF がトランスポートストリーム内の PSI テーブルからスケジュール情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ScheduleEntryChanged イベントが発生するのを待つ必要があります。
コレクション内の各 VARIANT 型には、多重化内の 1 つのスケジュールエントリを一意に識別する BSTR が含まれます。スケジュールエントリに関する詳細情報を取得するには、VARIANT を IGuideData::GetScheduleEntryProperties メソッドに渡します。
返される IEnumVARIANT インターフェースはスレッドセーフではありません。クライアントは、複数のスレッドからこのインターフェースのメソッドを呼び出さないでください。
GetScheduleEntryProperties メソッドは、指定されたスケジュールエントリのプロパティを取得します。
| varScheduleEntryDescriptionID | VARIANT | in | スケジュールエントリの一意な識別子を指定します。スケジュールエントリ識別子のリストを取得するには、IGuideData::GetScheduleEntryIDs メソッドを呼び出します。 |
| ppEnumProperties | IEnumGuideDataProperties** | out | IEnumGuideDataProperties インターフェースポインターを受け取る変数へのポインター。このインターフェースを使用してプロパティを列挙します。呼び出し元はインターフェースを解放する必要があります |
戻り値
このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。
| 戻り値コード | 説明 |
|---|---|
| メソッドが成功しました。 |
解説(Remarks)
返されるコレクションには、次のプロパティが含まれます。
| プロパティ | 説明 |
|---|---|
| Description.ID | スケジュールエントリの一意な識別子。 |
| Time.Start | このスケジュールエントリの開始時刻および日付。このプロパティの値は、GPS 時刻での時刻と日付を含む符号なし long です。 |
| Time.End | このスケジュールエントリの終了時刻および日付。このプロパティの値は、GPS 時刻での時刻と日付を含む符号なし long です。 |
| ScheduleEntry.ProgramID | このスケジュールエントリで指定された時刻に再生される番組を識別します。このプロパティの値は、番組の Description.ID プロパティに対応します。 |
| ScheduleEntry.ServiceID | このスケジュールエントリが表す番組を伝送するサービスを識別します。このプロパティの値は、サービスの Description.ID プロパティに対応します。 |
TIF がトランスポートストリーム内の PSI テーブルからスケジュール情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ScheduleEntryChanged イベントが発生するのを待つ必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IGuideData "{61571138-5B01-43CD-AEAF-60B784A0BF93}"
#usecom global IGuideData IID_IGuideData "{}"
#comfunc global IGuideData_GetServices 3 sptr
#comfunc global IGuideData_GetServiceProperties 4 sptr,sptr
#comfunc global IGuideData_GetGuideProgramIDs 5 sptr
#comfunc global IGuideData_GetProgramProperties 6 int,sptr
#comfunc global IGuideData_GetScheduleEntryIDs 7 sptr
#comfunc global IGuideData_GetScheduleEntryProperties 8 int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。