Compartilhar via


estrutura WMDM_FORMAT_CAPABILITY

A estrutura WMDM_FORMAT_CAPABILITY descreve os recursos de um dispositivo para um formato específico. Essa estrutura contém um conjunto de configurações de propriedade em uma matriz de estruturas WMDM_PROP_CONFIG . Cada configuração de propriedade representa um conjunto de valores de propriedade compatíveis em todas as propriedades com suporte para um determinado formato. O aplicativo pode obter essa estrutura chamando o método IWMDMDevice3::GetFormatCapability e passando o código de formato. Para obter uma lista de códigos de formato, consulte WMDM_FORMATCODE.

Sintaxe

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

Membros

nPropConfig

Número de configurações de propriedade na matriz pConfigs .

pConfigs

Ponteiro para uma matriz de estruturas WMDM_PROP_CONFIG . O tamanho da matriz é igual ao valor de nPropConfig.

Comentários

A estrutura WMDM_FORMAT_CAPABILITY fornece um mecanismo flexível para expressar os recursos do dispositivo para um formato específico.

Se o conteúdo for renderizado pelo dispositivo (por exemplo, um arquivo de áudio a ser reproduzido pelo dispositivo), as propriedades do conteúdo deverão corresponder a uma das configurações de propriedade retornadas por IWMDMDevice3::GetFormatCapability na estrutura WMDM_FORMAT_CAPABILITY . Por exemplo, para um arquivo de áudio, a taxa de bits e a taxa de exemplo devem atender a uma das configurações de propriedade retornadas.

O chamador é responsável por liberar a memória alocada para essa estrutura. A função a seguir demonstra como limpar uma estrutura de 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;
}

Requisitos

Requisito Valor
parâmetro
Wmdm.idl

Confira também

IWMDMDevice3::GetFormatCapability

WMDM_ENUM_PROP_VALID_VALUES_FORM

WMDM_PROP_CONFIG

WMDM_PROP_DESC

WMDM_PROP_VALUES_ENUM

WMDM_PROP_VALUES_RANGE

Estruturas