次の方法で共有


チューニング空間

チューニング空間は、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 のチューニングをサポートするためには、新しいチューニング空間を作成し、それをシステム レジストリに追加する必要がある。これは次のように行う。

  1. DVD チューニング空間オブジェクトを作成する。DVB-T か DVB-C のための DVBTuningSpace、および DVB-S のための DVBSTuningSpace オブジェクトを使う。
  2. ITuningSpace と派生インターフェイスを使用してチューニング空間のプロパティを設定する。
  3. DVB ロケータ オブジェクト (DVBTLocator または DVBSLocator) を作成する。
  4. ILocator と派生インターフェイスを使用してロケータのプロパティを設定する。ロケータの詳細については、「ロケータ」を参照すること。
  5. ITuningSpace::put_DefaultLocator メソッドを呼び出して、ロケータをチューニング空間のデフォルト ロケータとして割り当てる。
  6. オプションで、デフォルトのコンポーネント タイプを作成する。ITuningSpace::put_DefaultPreferredComponentTypes メソッドを呼び出して、作成したコンポーネント タイプをチューニング空間の優先コンポーネント タイプとして割り当てる。詳細については、「コンポーネント」を参照すること。
  7. TuningSpaceContainer::Add メソッドを呼び出してチューニング空間を SystemTuningSpaces コレクションに追加する。SystemTuningSpaces オブジェクトは自動的にチューニング空間をレジストリに永続化する。

既存のチューニング空間を変更することもできる。そのためには、SystemTuningSpaces コレクションからチューニング空間を取得し、目的のプロパティを設定する。次に ITuningSpaceContainer::put_Item を呼び出して、変更したチューニング空間をコレクションに保存する。