Freigeben über


WMDM_FORMAT_CAPABILITY-Struktur

Die WMDM_FORMAT_CAPABILITY-Struktur beschreibt die Funktionen eines Geräts für ein bestimmtes Format. Diese Struktur enthält eine Reihe von Eigenschaftenkonfigurationen in einem Array von WMDM_PROP_CONFIG Strukturen. Jede Eigenschaftenkonfiguration stellt einen Satz kompatibler Eigenschaftswerte für alle Eigenschaften dar, die für ein bestimmtes Format unterstützt werden. Die Anwendung kann diese Struktur abrufen, indem sie die IWMDMDevice3::GetFormatCapability-Methode aufruft und den Formatcode übergibt. Eine Liste der Formatcodes finden Sie unter WMDM_FORMATCODE.

Syntax

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

Member

nPropConfig

Anzahl der Eigenschaftenkonfigurationen im pConfigs-Array .

pConfigs

Zeiger auf ein Array von WMDM_PROP_CONFIG Strukturen. Die Größe des Arrays entspricht dem Wert von nPropConfig.

Bemerkungen

Die WMDM_FORMAT_CAPABILITY-Struktur bietet einen flexiblen Mechanismus zum Ausdrücken der Funktionen des Geräts für ein bestimmtes Format.

Wenn der Inhalt vom Gerät gerendert werden soll (z. B. eine Audiodatei, die vom Gerät wiedergegeben werden soll), müssen die Eigenschaften des Inhalts mit einer der Eigenschaftenkonfigurationen übereinstimmen, die von IWMDMDevice3::GetFormatCapability in der WMDM_FORMAT_CAPABILITY-Struktur zurückgegeben werden. Beispielsweise müssen für eine Audiodatei die Bitrate und die Abtastrate eine der zurückgegebenen Eigenschaftenkonfigurationen erfüllen.

Der Aufrufer ist dafür verantwortlich, den für diese Struktur zugewiesenen Arbeitsspeicher freizugeben. Die folgende Funktion veranschaulicht, wie eine WMDM_FORMAT_CAPABILITY-Struktur gelöscht wird.

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;
}

Anforderungen

Anforderung Wert
Header
Wmdm.idl

Siehe auch

IWMDMDevice3::GetFormatCapability

WMDM_ENUM_PROP_VALID_VALUES_FORM

WMDM_PROP_CONFIG

WMDM_PROP_DESC

WMDM_PROP_VALUES_ENUM

WMDM_PROP_VALUES_RANGE

Strukturen