Para alterar as versões do perfil do sistema
[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador do Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador do Coletor em vez do SDK do Windows Media Format 11, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
Sempre que você cria um objeto do gerenciador de perfil, ele analisa os perfis do sistema. Você pode iterar pelos perfis do sistema usando os métodos IWMProfileManager::GetSystemProfileCount e IWMProfileManager::LoadSystemProfile , mas o gerenciador de perfil contará e listará apenas os perfis de uma única versão por vez. Se você quiser usar esse método de localização de perfis do sistema, precisará garantir que o gerenciador de perfis lide com a versão desejada. Use os métodos da interface IWMProfileManager2 para definir e recuperar a versão do perfil do sistema usada pelo gerenciador de perfil.
As versões são especificadas usando os membros do tipo de enumeração WMT_VERSION . Se você definir a versão do perfil do sistema como WMT_VER_9_0, a chamada terá êxito, mas a contagem de perfis do sistema será zero. Isso ocorre porque nenhum perfil de sistema predefinido usa os codecs da Série 9 de Áudio e Vídeo do Windows Media. Para obter mais informações sobre como atualizar perfis para usar os codecs mais recentes, consulte Reutilizando configurações de fluxo.
Se você carregar um perfil do sistema por seu identificador GUID, não importa qual versão de perfil do sistema o gerenciador de perfis está usando. Para obter mais informações sobre como carregar perfis do sistema, consulte Para carregar um perfil do sistema.
O código de exemplo a seguir mostra como definir e recuperar a versão do perfil do sistema. Este exemplo usa printf para a saída do console e requer que stdio.h seja incluído. Para obter mais informações sobre como usar esse código, consulte Usando os exemplos de código.
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);
}
Tópicos relacionados