WMDM _ FORMAT CAPABILITY structure (WMDM-FORMATFUNKTIONsstruktur) _

Die WMDM _ FORMAT _ CAPABILITY-Struktur beschreibt die Funktionen eines Geräts für ein bestimmtes Format. Diese Struktur enthält einen Satz 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.

Hinweise

Die WMDM _ FORMAT _ CAPABILITY-Struktur bietet einen flexiblen Mechanismus, um die Funktionen des Geräts für ein bestimmtes Format auszudrücken.

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 die Bitrate und die Abtastrate für eine Audiodatei eine der zurückgegebenen Eigenschaftenkonfigurationen erfüllen.

Der Aufrufer ist dafür verantwortlich, den für diese Struktur belegten Arbeitsspeicher freizugeben. Die folgende Funktion veranschaulicht das Löschen einer WMDM _ FORMAT _ CAPABILITY-Struktur.

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

Weitere Informationen

IWMDMDevice3::GetFormatCapability

WMDM _ ENUM _ PROP _ VALID _ VALUES _ FORM

WMDM _ PROP _ CONFIG

WMDM _ PROP _ DESC

WMDM _ PROP _ VALUES _ ENUM

_ _ WMDM-PROP-WERTEBEREICH _

Strukturen