Compartir a través de


estructura de WMDM_FORMAT_CAPABILITY

La estructura WMDM_FORMAT_CAPABILITY describe las funcionalidades de un dispositivo para un formato determinado. Esta estructura contiene un conjunto de configuraciones de propiedad en una matriz de estructuras de WMDM_PROP_CONFIG . Cada configuración de propiedad representa un conjunto de valores de propiedad compatibles en todas las propiedades admitidas para un formato determinado. La aplicación puede obtener esta estructura llamando al método IWMDMDevice3::GetFormatCapability y pasando el código de formato. Para obtener una lista de códigos de formato, consulte WMDM_FORMATCODE.

Sintaxis

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

Miembros

nPropConfig

Número de configuraciones de propiedad en la matriz pConfigs .

pConfigs

Puntero a una matriz de estructuras de WMDM_PROP_CONFIG . El tamaño de la matriz es igual al valor de nPropConfig.

Observaciones

La estructura WMDM_FORMAT_CAPABILITY proporciona un mecanismo flexible para expresar las funcionalidades del dispositivo para un formato determinado.

Si el dispositivo representa el contenido (por ejemplo, un archivo de audio que va a reproducir el dispositivo), las propiedades del contenido deben coincidir con una de las configuraciones de propiedad devueltas por IWMDMDevice3::GetFormatCapability en la estructura de WMDM_FORMAT_CAPABILITY . Por ejemplo, para un archivo de audio, la velocidad de bits y la velocidad de muestreo deben satisfacer una de las configuraciones de propiedad devueltas.

El autor de la llamada es responsable de liberar la memoria asignada para esta estructura. La siguiente función muestra cómo borrar una estructura 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 Value
Encabezado
Wmdm.idl

Vea también

IWMDMDevice3::GetFormatCapability

WMDM_ENUM_PROP_VALID_VALUES_FORM

WMDM_PROP_CONFIG

WMDM_PROP_DESC

WMDM_PROP_VALUES_ENUM

WMDM_PROP_VALUES_RANGE

Estructuras