チューニング空間
チューニング空間は、ATSC デジタル アンテナや DVB ケーブルなどの特定のネットワーク タイプを表す。チューニング空間オブジェクトは次のような複数の機能を実行する。
- 物理チャンネルの範囲など、ネットワークに関する情報を格納する。
- チューニング要求のファクトリである。
- 永続化可能であり、システム レジストリに格納できる。
アナログ ケーブル、アナログ アンテナ、ATSC デジタル ケーブル、ATSC デジタル アンテナ、およびアナログ補助入力用のデフォルト チューニング空間が提供されている。詳細については、「デフォルト チューニング空間」を参照すること。サード パーティは、DVB-T、DVB-S、またはその他のネットワーク タイプをサポートする独自のチューニング空間を作成できる。
すべてのチューニング空間オブジェクトが ITuningSpace インターフェイスを公開する。追加のネットワーク固有インターフェイスが ITuningSpace から派生する。たとえば、ATSC チューニング空間は IATSCTuningSpace インターフェイスを公開する。
システム チューニング空間コレクション
SystemTuningSpaces オブジェクトは、ローカル システム上で利用可能なすべてのチューニング空間のコレクションである。このオブジェクトは、利用可能なチューニング空間を列挙するため、および新しいチューニング空間を追加するために使う。SystemTuningSpaces オブジェクトは、ITuningSpaceContainer インターフェイスを公開する。
次のコードは、SystemTuningSpaces オブジェクトを作成し、ITuningSpaceContainer::get_EnumTuningSpaces メソッドを使っててチューニング空間を列挙する方法を示している。
// SystemTuningSpaces コレクションを作成する。
CComPtr <ITuningSpaceContainer> pTuningSpaceContainer;
hr = pITuningSpaceContainer.CoCreateInstance(CLSID_SystemTuningSpaces);
if (SUCCEEDED(hr))
{
// コレクションの列挙子を取得する。
CComPtr<IEnumTuningSpaces> pTuningSpaceEnum;
hr = pTuningSpaceContainer->get_EnumTuningSpaces(&pTuningSpaceEnum);
if (SUCCEEDED(hr))
{
// コレクションをループする。
CComPtr<ITuningSpace> pTuningSpace;
while (S_OK == pTuningSpaceEnum->Next(1, &pTuningSpace, NULL))
{
// pTuningSpace は次のチューニング空間をポイントする。
// このポインタで派生インターフェイスを問い合わせることができる。
}
}
}
すべてのチューニング空間は、特定のコンピュータの SystemTuningSpaces コレクション内で一意な UniqueName プロパティを持つ。このプロパティは特定のチューニング空間を見つけるために使用する。このプロパティを取得するには、ITuningSpace::get_UniqueName を呼び出す。
チューニング要求の作成
新しいチューニング要求を作成するには、チューニング空間の ITuningSpace::CreateTuneRequest メソッドを呼び出す。このメソッドは、そのチューニング空間のネットワーク タイプに対応するチューニング要求オブジェクトを返す。新しいチューニング要求オブジェクトは初期化されていない。チューニング要求のメソッドを呼び出して、特定のチャンネルまたは番組に対するチューニング情報を追加する必要がある。詳細については、「チューニング要求」を参照すること。
新しいチューニング空間の作成
Microsoft では、DVB チューニング用のネットワーク プロバイダ フィルタを提供しており、統合チューニング モデルで DVB チューニング用のオブジェクトとインターフェイスを定義している。ただし、デフォルトの DVB チューニング空間はない (必要なパラメータの多くが個々の放送局に固有であるため)。したがって、DVB のチューニングをサポートするためには、新しいチューニング空間を作成し、それをシステム レジストリに追加する必要がある。これは次のように行う。
- DVD チューニング空間オブジェクトを作成する。DVB-T か DVB-C のための DVBTuningSpace、および DVB-S のための DVBSTuningSpace オブジェクトを使う。
- ITuningSpace と派生インターフェイスを使用してチューニング空間のプロパティを設定する。
- DVB ロケータ オブジェクト (DVBTLocator または DVBSLocator) を作成する。
- ILocator と派生インターフェイスを使用してロケータのプロパティを設定する。ロケータの詳細については、「ロケータ」を参照すること。
- ITuningSpace::put_DefaultLocator メソッドを呼び出して、ロケータをチューニング空間のデフォルト ロケータとして割り当てる。
- オプションで、デフォルトのコンポーネント タイプを作成する。ITuningSpace::put_DefaultPreferredComponentTypes メソッドを呼び出して、作成したコンポーネント タイプをチューニング空間の優先コンポーネント タイプとして割り当てる。詳細については、「コンポーネント」を参照すること。
- TuningSpaceContainer::Add メソッドを呼び出してチューニング空間を SystemTuningSpaces コレクションに追加する。SystemTuningSpaces オブジェクトは自動的にチューニング空間をレジストリに永続化する。
既存のチューニング空間を変更することもできる。そのためには、SystemTuningSpaces コレクションからチューニング空間を取得し、目的のプロパティを設定する。次に ITuningSpaceContainer::put_Item を呼び出して、変更したチューニング空間をコレクションに保存する。