Поделиться через


структура 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::GetFormatCapability в структуре WMDM_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

Структуры