次の方法で共有


システム プロファイルのバージョンを変更するには

[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーシンク ライターに置き換わりました。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

プロファイル マネージャー オブジェクトを作成するたびに、システム プロファイルが解析されます。 IWMProfileManager::GetSystemProfileCount メソッドと IWMProfileManager::LoadSystemProfile メソッドを使用してシステム プロファイルを反復処理できますが、プロファイル マネージャーは一度に 1 つのバージョンのプロファイルのみをカウントして一覧表示します。 この方法でシステム プロファイルを検索する場合は、プロファイル マネージャーが必要なバージョンを処理していることを確認する必要があります。 IWMProfileManager2 インターフェイスのメソッドを使用して、プロファイル マネージャーによって使用されるシステム プロファイル バージョンを設定および取得します。

バージョンは、 WMT_VERSION 列挙型のメンバーを使用して指定されます。 システム プロファイルのバージョンを WMT_VER_9_0 に設定すると、呼び出しは成功しますが、システム プロファイルの数は 0 になります。 これは、Windows Media Audio および Video 9 シリーズ コーデックを使用する定義済みのシステム プロファイルがないためです。 最新のコーデックを使用するようにプロファイルを更新する方法の詳細については、「 ストリーム構成の再利用」を参照してください。

GUID 識別子によってシステム プロファイルを読み込む場合、プロファイル マネージャーが使用しているシステム プロファイルのバージョンは関係ありません。 システム プロファイルの読み込みの詳細については、「 システム プロファイルを読み込むには」を参照してください。

次のコード例は、システム プロファイルのバージョンを設定および取得する方法を示しています。 この例では、コンソール出力に printf を使用し、stdio.h を含める必要があります。 このコードの使用方法の詳細については、「コード 例の使用」を参照してください。

int main(void)
{
    HRESULT hr = S_OK;

    IWMProfileManager*  pProfileMgr  = NULL;
    IWMProfileManager2* pProfileMgr2 = NULL;

    WMT_VERSION         profileVersion;

    // Initialize COM.
    hr = CoInitialize(NULL);
    if(FAILED(hr))
    {
        printf("Could not initialize COM.");
        return 0;
    }

    // Create a profile manager object.
    hr = WMCreateProfileManager(&pProfileMgr);
    if(FAILED(hr))
    {
        printf("Could not create a profile manager object.");
        return 0;
    }

    // Get the IWMProfileManager2 interface.
    hr = pProfileMgr->QueryInterface(IID_IWMProfileManager2, 
                                     (void**) &pProfileMgr2);
    if(FAILED(hr))
    {
        printf("Could not get the IWMProfileManager2 interface.");
        SAFE_RELEASE(pProfileMgr);
        return 0;
    }

    // Release the old interface.
    SAFE_RELEASE(pProfileMgr);

    // Get the current system profile version.
    hr = pProfileMgr2->GetSystemProfileVersion(&profileVersion);
    if(FAILED(hr))
    {
        printf("Could not retrieve profile version.");
        printf("\nError code: 0x%X\n", hr);
        SAFE_RELEASE(pProfileMgr2);
        return 0;
    }
    
    // Display the current version.
    printf("Current version: ");
    switch(profileVersion)
    {
    case WMT_VER_4_0:
        printf("WMT_VER_4_0\n");
        break;
    case WMT_VER_7_0:
        printf("WMT_VER_7_0\n");
        break;
    case WMT_VER_8_0:
        printf("WMT_VER_8_0\n");
        break;
    case WMT_VER_9_0:
        printf("WMT_VER_9_0\n");
        break;
    }

    // Set the system profile version to 8.
    profileVersion = WMT_VER_8_0;

    hr = pProfileMgr2->SetSystemProfileVersion(profileVersion);
    if(FAILED(hr))
    {
        printf("Could not change profile version.");
        printf("\nError code: 0x%X\n", hr);
        SAFE_RELEASE(pProfileMgr2);
        return 0;
    }

    // Print verification.
    printf("Successfully set version to ");
    switch(profileVersion)
    {
    case WMT_VER_4_0:
        printf("WMT_VER_4_0\n");
        break;
    case WMT_VER_7_0:
        printf("WMT_VER_7_0\n");
        break;
    case WMT_VER_8_0:
        printf("WMT_VER_8_0\n");
        break;
    case WMT_VER_9_0:
        printf("WMT_VER_9_0\n");
        break;
    }

    // Clean up.
    SAFE_RELEASE(pProfileMgr2);
}

システム プロファイルの使用