Изменение версий системного профиля
[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Он был заменен средством чтения исходного кода и модуля записи приемника. Средство чтения исходного кода и модуль записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код по возможности использовал средство чтения исходного кода и модуль записи приемника вместо пакета SDK для Windows Media Format 11. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Каждый раз, когда вы создаете объект диспетчера профилей, он анализирует системные профили. Вы можете выполнить итерацию системных профилей с помощью методов IWMProfileManager::GetSystemProfileCount и IWMProfileManager::LoadSystemProfile , но диспетчер профилей будет подсчитывать и перечислять профили только одной версии за раз. Если вы хотите использовать этот метод поиска системных профилей, необходимо убедиться, что диспетчер профилей работает с нужной версией. Используйте методы интерфейса IWMProfileManager2 , чтобы задать и получить версию системного профиля, используемую диспетчером профилей.
Версии задаются с помощью членов типа перечисления WMT_VERSION . Если для версии системного профиля задано значение WMT_VER_9_0, вызов будет выполнен успешно, но число системных профилей будет равно нулю. Это связано с тем, что стандартные системные профили не используют кодеки windows Media Audio и Video 9 Series. Дополнительные сведения об обновлении профилей для использования новейших кодеков см. в разделе Повторное использование конфигураций потоков.
При загрузке системного профиля по идентификатору 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);
}
Связанные темы