다음을 통해 공유


시스템 프로필 버전을 변경하려면

[이 페이지와 연결된 기능인 Windows Media Format 11 SDK는 레거시 기능입니다. 원본 판독기 및 싱크 작성기에 의해 대체되었습니다. 원본 판독기 및 싱크 작성기는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 소스 판독기 및 싱크 작성기를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

프로필 관리자 개체를 만들 때마다 시스템 프로필을 구문 분석합니다. IWMProfileManager::GetSystemProfileCountIWMProfileManager::LoadSystemProfile 메서드를 사용하여 시스템 프로필을 반복할 수 있지만 프로필 관리자는 한 번에 단일 버전의 프로필만 계산하고 나열합니다. 시스템 프로필을 찾는 이 방법을 사용하려면 프로필 관리자가 원하는 버전을 처리하는지 확인해야 합니다. IWMProfileManager2 인터페이스의 메서드를 사용하여 프로필 관리자가 사용하는 시스템 프로필 버전을 설정하고 검색합니다.

버전은 WMT_VERSION 열거형 형식의 멤버를 사용하여 지정됩니다. 시스템 프로필 버전을 WMT_VER_9_0 설정하면 호출이 성공하지만 시스템 프로필 수는 0이 됩니다. 이는 미리 정의된 시스템 프로필이 Windows Media Audio 및 Video 9 시리즈 코덱을 사용하지 않으므로 입니다. 최신 코덱을 사용하도록 프로필을 업데이트하는 방법에 대한 자세한 내용은 Stream Configurations 재사용을 참조하세요.

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

시스템 프로필 사용