Dela via


Ändra systemprofilversioner

[Funktionen som är associerad med den här sidan, Windows Media Format 11 SDK, är en äldre funktion. Det har ersatts av Source Reader och Sink Writer. Source Reader och Sink Writer har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder Source Reader och Sink Writer i stället för Windows Media Format 11 SDK, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]

När du skapar ett profilhanterarobjekt parsar det systemprofilerna. Du kan iterera genom systemprofilerna med hjälp av IWMProfileManager::GetSystemProfileCount och IWMProfileManager::LoadSystemProfile metoder, men profilhanteraren räknar och listar bara profilerna för en enskild version i taget. Om du vill använda den här metoden för att hitta systemprofiler måste du se till att profilhanteraren hanterar den version du vill ha. Använd metoderna i IWMProfileManager2-gränssnittet för att ange och hämta systemprofilversionen som används av profilhanteraren.

Versioner anges med hjälp av medlemmarna i uppräkningstypen WMT_VERSION. Om du ställer in systemprofilversionen på WMT_VER_9_0 lyckas anropet, men antalet systemprofiler blir noll. Det beror på att inga fördefinierade systemprofiler använder koderna i Windows Media Audio och Video 9-serien. Mer information om hur du uppdaterar profilerna för att använda de senaste kodekarna finns i Återanvända Stream Configurations.

Om du läser in en systemprofil med dess GUID-identifierare spelar det ingen roll vilken systemprofilversion profilhanteraren använder. Mer information om hur du läser in systemprofiler finns i Läsa in en systemprofil.

Följande exempelkod visar hur du anger och hämtar systemprofilversionen. Det här exemplet använder printf för konsolutdata och kräver att stdio.h inkluderas. Mer information om hur du använder den här koden finns i Använda kodexemplen.

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);
}

använda systemprofiler