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

IGuideData

COM
IID61571138-5b01-43cd-aeaf-60b784a0bf93継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

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。

vtbl 3 HRESULT GetServices(IEnumTuneRequests** ppEnumTuneRequests)

GetServices メソッドは、チューニングスペースで利用可能なすべてのサービスを表すチューン要求のコレクションを取得します。

ppEnumTuneRequestsIEnumTuneRequests**outIEnumTuneRequests インターフェースポインターを受け取る変数へのポインター。このインターフェースを使用してプロパティを列挙します。呼び出し元はインターフェースを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(Remarks)

このメソッドは、service descriptor table に列挙されているすべてのサービスを列挙するために使用します。返されるコレクション内の各チューン要求には、そのサービスのロケーターデータが含まれます。サービスに関する詳細情報を取得するには、ITuneRequest ポインターを IGuideData::GetServiceProperties メソッドに渡します。

TIF がトランスポートストリーム内の PSI テーブルからサービス情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ServiceChanged イベントが発生するのを待つ必要があります。

vtbl 4 HRESULT GetServiceProperties(ITuneRequest* pTuneRequest, IEnumGuideDataProperties** ppEnumProperties)

GetServiceProperties メソッドは、指定されたサービスのプロパティを取得します。

pTuneRequestITuneRequest*in有効なチューン要求の ITuneRequest インターフェースへのポインター。チューン要求のリストを取得するには、IGuideData::GetServices メソッドを呼び出します。
ppEnumPropertiesIEnumGuideDataProperties**outIEnumGuideDataProperties インターフェースポインターを受け取る変数へのポインター。このインターフェースを使用してプロパティを列挙します。呼び出し元はインターフェースを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(Remarks)

返されるコレクションには、次のプロパティが含まれます。

プロパティ 説明
Description.ID サービスの一意な識別子。
Description.Name チャンネルラインナップ内でこのサービスに使用する既定の名前。
Provider.Name サービスプロバイダーの名前。
Provider.NetworkName サービスが提供されるネットワークの名前。

TIF がトランスポートストリーム内の PSI テーブルからサービス情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ServiceChanged イベントが発生するのを待つ必要があります。

vtbl 5 HRESULT GetGuideProgramIDs(IEnumVARIANT** pEnumPrograms)

GetGuideProgramIDs メソッドは、すべてのトランスポートストリームに含まれるすべての番組の一意な識別子のリストを返します。

pEnumProgramsIEnumVARIANT**outIEnumVARIANT インターフェースへのポインターを受け取ります。このインターフェースを使用してコレクションを列挙します。呼び出し元はインターフェースを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(Remarks)

TIF がトランスポートストリーム内の PSI テーブルから番組情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ProgramChanged イベントが発生するのを待つ必要があります。

コレクション内の各 VARIANT 型には、多重化内の 1 つの番組を一意に識別する BSTR が含まれます。番組に関する詳細情報を取得するには、VARIANTIGuideData::GetProgramProperties メソッドに渡します。

返される IEnumVARIANT インターフェースはスレッドセーフではありません。クライアントは、複数のスレッドからこのインターフェースのメソッドを呼び出さないでください。

vtbl 6 HRESULT GetProgramProperties(VARIANT varProgramDescriptionID, IEnumGuideDataProperties** ppEnumProperties)

GetProgramProperties メソッドは、指定された番組のプロパティを取得します。

varProgramDescriptionIDVARIANTin番組の一意な識別子を指定します。番組識別子のリストを取得するには、IGuideData::GetGuideProgramIDs メソッドを呼び出します。
ppEnumPropertiesIEnumGuideDataProperties**outIEnumGuideDataProperties インターフェースポインターを受け取る変数へのポインター。このインターフェースを使用してプロパティを列挙します。呼び出し元はインターフェースを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(Remarks)

返されるコレクションには、次のプロパティが含まれます。

プロパティ 説明
Description.ID 番組の一意な識別子。
Description.One Sentence 番組の説明。
Description.Title 番組の名前。

TIF がトランスポートストリーム内の PSI テーブルから番組情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ProgramChanged イベントが発生するのを待つ必要があります。

vtbl 7 HRESULT GetScheduleEntryIDs(IEnumVARIANT** pEnumScheduleEntries)

GetScheduleEntryIDs メソッドは、すべてのトランスポートストリームに含まれるすべてのスケジュールエントリの一意な識別子のリストを返します。

pEnumScheduleEntriesIEnumVARIANT**outIEnumVARIANT インターフェースへのポインターを受け取ります。このインターフェースを使用してコレクションを列挙します。呼び出し元はインターフェースを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(Remarks)

TIF がトランスポートストリーム内の PSI テーブルからスケジュール情報をまだ受信していない場合、このメソッドは失敗します。クライアントは IGuideDataEvent インターフェースを実装し、IGuideDataEvent::ScheduleEntryChanged イベントが発生するのを待つ必要があります。

コレクション内の各 VARIANT 型には、多重化内の 1 つのスケジュールエントリを一意に識別する BSTR が含まれます。スケジュールエントリに関する詳細情報を取得するには、VARIANTIGuideData::GetScheduleEntryProperties メソッドに渡します。

返される IEnumVARIANT インターフェースはスレッドセーフではありません。クライアントは、複数のスレッドからこのインターフェースのメソッドを呼び出さないでください。

vtbl 8 HRESULT GetScheduleEntryProperties(VARIANT varScheduleEntryDescriptionID, IEnumGuideDataProperties** ppEnumProperties)

GetScheduleEntryProperties メソッドは、指定されたスケジュールエントリのプロパティを取得します。

varScheduleEntryDescriptionIDVARIANTinスケジュールエントリの一意な識別子を指定します。スケジュールエントリ識別子のリストを取得するには、IGuideData::GetScheduleEntryIDs メソッドを呼び出します。
ppEnumPropertiesIEnumGuideDataProperties**outIEnumGuideDataProperties インターフェースポインターを受け取る変数へのポインター。このインターフェースを使用してプロパティを列挙します。呼び出し元はインターフェースを解放する必要があります

戻り値

このメソッドは HRESULT を返します。とり得る値には、次の表に示すものが含まれます。

戻り値コード 説明
S_OK
メソッドが成功しました。

解説(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 の 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_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 指定が可能。