ITuneRequest
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ITuneRequest インターフェイスは、すべてのチューン要求の基底インターフェイスです。
解説(Remarks)
このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(ITuneRequest)。
メソッド 5
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
get_TuningSpace メソッドは、このチューン要求の作成に使用されたチューニングスペースを取得します。
| TuningSpace | ITuningSpace** | out | ITuningSpace インターフェイスへのポインターを受け取ります。呼び出し側はこのインターフェイスを解放する必要があります。 |
戻り値
成功した場合は S_OK を返します。メソッドが失敗した場合、エラー情報は標準の COM IErrorInfo インターフェイスを使用して取得できます。
解説(Remarks)
既定のロケーターおよび既定の推奨コンポーネントタイプを取得するには、まずチューニングスペースにアクセスする必要があります。
get_Components メソッドは、このチューン要求に含まれるコンポーネントを取得します。
| Components | IComponents** | out | IComponents インターフェイスポインターを受け取ります。呼び出し側はこのインターフェイスを解放する必要があります。 |
戻り値
成功した場合は S_OK を返します。メソッドが失敗した場合、エラー情報は標準の COM IErrorInfo インターフェイスを使用して取得できます。
解説(Remarks)
チューン要求は常にコンポーネントのコレクションを保持しますが、このコレクションは空の場合もあります。コンポーネント情報がトランスポートストリームのテーブル内に存在する場合、Guide Store ローダーは TIF からその情報を取得し、チューン要求の作成時にそれを組み込むことができます。
メソッドが成功した場合、IComponents インターフェイスには未解放の参照カウントが残ります。呼び出し側はこのインターフェイスを解放する必要があります。
チューン要求が Network Provider フィルターに送信されると、Network Provider はチューン要求内のコンポーネントリストを更新します。更新されたコンポーネントリストを取得するには、Network Provider に対して ITuner::get_TuneRequest を呼び出し、返されたチューン要求に対して get_Components を呼び出します。(Network Provider に送信された元のチューン要求は更新されません。これは、Network Provider がチューン要求の内部コピーを作成するためです。したがって、更新されたコンポーネントリストを取得するには get_TuneRequest を呼び出す必要があります。)
Clone メソッドは、このチューン要求の新しいコピーを返します。
| NewTuneRequest | ITuneRequest** | out | 新しいオブジェクトが設定される ITuneRequest インターフェイスポインターのアドレスです。 |
戻り値
成功した場合は S_OK を返します。メソッドが失敗した場合、エラー情報は標準の COM IErrorInfo インターフェイスを使用して取得できます。
解説(Remarks)
このメソッドはオブジェクトの「ディープコピー」を実行します。つまり、Components や LanguageComponentType オブジェクトなどを含む、すべてのサブオブジェクトもコピーします。
get_Locator メソッドは、要求された放送に関連付けられた ILocator オブジェクトを取得するために Network Provider から呼び出されます。
| Locator | ILocator** | out | 新しいオブジェクトが設定される ILocator インターフェイスポインターのアドレスです。 |
戻り値
成功した場合は S_OK を返します。メソッドが失敗した場合、エラー情報は標準の COM IErrorInfo インターフェイスを使用して取得できます。
put_Locator メソッドは、要求された放送に関連付けられた ILocator オブジェクトを設定するために Network Provider から呼び出されます。
| Locator | ILocator* | in | 新しいロケーターを指定する ILocator インターフェイスへのポインターです。 |
戻り値
成功した場合は S_OK を返します。メソッドが失敗した場合、エラー情報は標準の COM IErrorInfo インターフェイスを使用して取得できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITuneRequest "{07DDC146-FC3D-11D2-9D8C-00C04F72D980}"
#usecom global ITuneRequest IID_ITuneRequest "{B46E0D38-AB35-4A06-A137-70576B01B39F}"
#comfunc global ITuneRequest_get_TuningSpace 7 sptr
#comfunc global ITuneRequest_get_Components 8 sptr
#comfunc global ITuneRequest_Clone 9 sptr
#comfunc global ITuneRequest_get_Locator 10 sptr
#comfunc global ITuneRequest_put_Locator 11 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。