變更系統設定檔版本
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows Media Format 11 SDK。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
每當您建立設定檔管理員物件時,它會剖析系統設定檔。 您可以使用 IWMProfileManager::GetSystemProfileCount 和 IWMProfileManager::LoadSystemProfile 方法逐一查看系統設定檔,但設定檔管理員一次只會計算並列出單一版本的設定檔。 如果您想要使用這個尋找系統設定檔的方法,您必須確定設定檔管理員會處理您想要的版本。 使用 IWMProfileManager2 介面的方法,來設定及擷取設定檔管理員所使用的系統設定檔版本。
版本是使用 WMT_VERSION 列舉型別的成員來指定。 如果您將系統設定檔版本設定為 WMT_VER_9_0,呼叫將會成功,但系統設定檔計數會是零。 這是因為沒有預先定義的系統設定檔使用 Windows 媒體音訊和視訊 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);
}
相關主題