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構造は、特定の形式のデバイスの機能を表現するための柔軟なメカニズムを提供します。

コンテンツがデバイスによってレンダリングされる場合 (デバイスで再生されるオーディオ ファイルなど)、コンテンツのプロパティは、WMDM_FORMAT_CAPABILITY構造体の IWMDMDevice3::GetFormatCapability によって返されるプロパティ構成のいずれかと一致する必要があります。 たとえば、オーディオ ファイルの場合、ビット レートとサンプル レートは、返されるプロパティ構成のいずれかを満たす必要があります。

呼び出し元は、この構造体に割り当てられたメモリを解放する役割を担います。 次の関数は、 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

構造体