次の方法で共有


チューニング要求の作成 (C++)

このトピックは Windows XP にのみ適用。

あらかじめ構成したチューニング要求をデータベースから取得することが望ましい。ただし、サポートする対象の特定のネットワーク タイプがわかっている場合は、チューニング要求を最初から新規に作成することができる。

ATSC チューニング要求を作成するには、次のようにすること。

  1. システム チューニング空間コレクションを作成する。
  2. チューニング空間を列挙して ATSC チューニング空間を取得する。
  3. ATSC チューニング空間を使って新しいチューニング要求を作成する。
  4. ATSC ロケータ オブジェクトを作成する。
  5. ロケータに物理チャンネル プロパティを設定する。
  6. ロケータをチューニング要求に関連付ける。
  7. チューニング要求をビデオ コントロールに渡す。
  8. ビデオ コントロールを実行する。

次の例ではエラー チェックを省略している。実際のコードでは、常に HRESULT の戻りコードをチェックする必要がある。

long lChannel = 46; // 任意のチャンネル番号を使用する。
HRESULT hr = S_OK;

// チューニング空間コレクションを作成する。
CComPtr<ITuningSpaceContainer> pTuningSpaceContainer;
hr = pTuningSpaceContainer.CoCreateInstance(CLSID_SystemTuningSpaces,
    NULL, CLSCTX_INPROC_SERVER);

// チューニング空間コレクション内で ATSC チューニング空間を検索する。
CComPtr<IEnumTuningSpaces> pEnumTuningSpaces;
CComBSTR bstrATSC(L"ATSC");
CComPtr<ITuningSpace> pTuningSpace;

hr = pTuningSpaceContainer->get_EnumTuningSpaces(&pEnumTuningSpaces);
while (S_OK == pEnumTuningSpaces->Next(1, &pTuningSpace, NULL))
{
    CComBSTR bstrTemp;
    hr = pTuningSpace->get_UniqueName(&bstrTemp);
    if (bstrTemp == bstrATSC)
    {
        break;  // 見つかった場合。
    }
        pTuningSpace = NULL;  // 次のループのために解放する。
}

if (pTuningSpace == NULL) // 見つからなかった場合。
{
        // エラーを処理する。
}
    
// ATSC チューニング要求を作成する。
CComPtr<IATSCTuningSpace> pATSCTuningSpace;
pTuningSpace.QueryInterface(&pATSCTuningSpace);
CComPtr<ITuneRequest> pTuneRequest;
hr = pATSCTuningSpace->CreateTuneRequest(&pTuneRequest);

// ATSC ロケータを作成し、物理チャンネルを設定する。
CComPtr<IATSCLocator> pATSCLocator;
pATSCLocator.CoCreateInstance(CLSID_ATSCLocator, NULL, 
    CLSCTX_INPROC_SERVER);
hr = pATSCLocator->put_PhysicalChannel(lChannel);

// チューニング要求のチャンネル プロパティおよびマイナー チャンネル プロパティを
// -1 に設定する。ネットワーク プロバイダは ATSC チャンネルへのチューニング後に
// これらのプロパティを設定する。
CComPtr<IATSCChannelTuneRequest> pATSCTuneRequest;
pTuneRequest.QueryInterface(&pATSCTuneRequest);
hr = pATSCTuneRequest->put_Channel(-1);
hr = pATSCTuneRequest->put_MinorChannel(-1);

// ロケータをチューニング要求にバインドする。
hr = pATSCTuneRequest->put_Locator(pATSCLocator);

// チューニング要求をビデオ コントロールに渡す。
CComVariant var(pATSCTuneRequest);
hr = pMSVidCtl->View(&var);
hr = pMSVidCtl->Run();

この例に示すように、アプリケーションでチューニング要求を作成するときは、特定のネットワーク タイプをターゲットにしなければならない。一方、アプリケーションが常にデータベースからチューニング要求を取得するのであれば、そのアプリケーションはサポートされている任意のネットワーク タイプに使える。