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

구조체