WMDM_FORMAT_CAPABILITY 結構

WMDM_FORMAT_CAPABILITY結構描述特定格式的裝置功能。 這個結構包含 WMDM_PROP_CONFIG 結構陣列 中的一組屬性組態。 每個屬性組態都代表一組相容的屬性值,橫跨指定格式支援的所有屬性。 應用程式可以藉由呼叫 IWMDMDevice3::GetFormatCapability 方法並傳入格式程式碼來取得此結構。 如需格式代碼的清單,請參閱 WMDM_FORMATCODE

語法

typedef struct _WMDM_FORMAT_CAPABILITY {
  UINT              nPropConfig;
  WMDM_PROP_CONFIG  *pConfigs;
} WMDM_FORMAT_CAPABILITY;

成員

nPropConfig

pConfigs陣列中的屬性組態數目。

pConfigs

WMDM_PROP_CONFIG結構的陣列指標。 陣列的大小等於 nPropConfig的值。

備註

WMDM_FORMAT_CAPABILITY結構提供彈性的機制,以表達裝置針對特定格式的功能。

例如,如果內容是要由裝置轉譯 (,則裝置要播放的音訊檔案) ,內容的屬性必須符合 IWMDMDevice3::GetFormatCapabilityWMDM_FORMAT_CAPABILITY 結構中傳回的屬性組態之一。 例如,針對音訊檔案,位元速率和取樣率必須滿足其中一個傳回的屬性組態。

呼叫端負責釋放配置給這個結構的記憶體。 下列函式示範如何清除 WMDM_FORMAT_CAPABILITY 結構。

void FreeFormatCapability(WMDM_FORMAT_CAPABILITY formatCap)
{
    // Loop through all configurations.
    for (UINT i=0; i < formatCap.nPropConfig; i++) 
    {
        // Loop through all descriptions of a configuration and delete
        // the values particular to that description type.
        for (UINT j=0; j < formatCap.pConfigs[i].nPropDesc; j++) 
        {
            switch (formatCap.pConfigs[i].pPropDesc[j].ValidValuesForm)
            {
                case WMDM_ENUM_PROP_VALID_VALUES_ENUM:
                    for (UINT k=0; k < formatCap.pConfigs[i].pPropDesc[j].ValidValues.EnumeratedValidValues.cEnumValues; k++)
                    {
                        PropVariantClear (&(formatCap.pConfigs[i].pPropDesc[j].ValidValues.EnumeratedValidValues.pValues[k]));
                    }
                    CoTaskMemFree(formatCap.pConfigs[i].pPropDesc[j].ValidValues.EnumeratedValidValues.pValues);
                    break;
                case WMDM_ENUM_PROP_VALID_VALUES_RANGE:
                    PropVariantClear (&(formatCap.pConfigs[i].pPropDesc[j].ValidValues.ValidValuesRange.rangeMin));
                    PropVariantClear (&(formatCap.pConfigs[i].pPropDesc[j].ValidValues.ValidValuesRange.rangeMax));
                    PropVariantClear (&(formatCap.pConfigs[i].pPropDesc[j].ValidValues.ValidValuesRange.rangeStep));
                    break;
                case WMDM_ENUM_PROP_VALID_VALUES_ANY:
                    // No dynamically allocated memory for this value.
                default:
                    break;
            }

            // Free the memory for the description name.
            CoTaskMemFree(formatCap.pConfigs[i].pPropDesc[j].pwszPropName);
        }
        // Free the memory holding the array of description items for this configuration.
        CoTaskMemFree(formatCap.pConfigs[i].pPropDesc);
    }

    // Free the memory pointing to the array of configurations.
    CoTaskMemFree(formatCap.pConfigs);
    formatCap.nPropConfig = 0;
}

規格需求

需求
標頭
Wmdm.idl

另請參閱

IWMDMDevice3::GetFormatCapability

WMDM_ENUM_PROP_VALID_VALUES_FORM

WMDM_PROP_CONFIG

WMDM_PROP_DESC

WMDM_PROP_VALUES_ENUM

WMDM_PROP_VALUES_RANGE

結構