Поделиться через


Поставщики метаданных оболочки

Начиная с Windows 7 Microsoft Media Foundation предоставляет метаданные через интерфейс IPropertyStore.

Метаданные, полученные с помощью процесса, определенного в этом разделе, должны использоваться только для доступа только для чтения. Запись данных с помощью этого процесса не поддерживается. Для записи можно создать объект IPropertyStore с помощью идентификатора класса (CLSID), полученного из PSLookupPropertyHandlerCLSID.

Чтение метаданных

Чтобы считывать метаданные из источника мультимедиа, выполните следующие действия.

  1. Получите указатель на интерфейс IMFMediaSource источника мультимедиа. Вы можете использовать интерфейс IMFSourceResolver для получения указателя IMFMediaSource.
  2. Вызовите MFGetService в источнике мультимедиа, чтобы получить указатель на интерфейс IPropertyStore. В параметре guidService MFGetServiceукажите значение MF_PROPERTY_HANDLER_SERVICE. Если источник не поддерживает интерфейс IPropertyStore, MFGetService возвращает MF_E_UNSUPPORTED_SERVICE.
  3. Вызовите методы IPropertyStore для перечисления свойств метаданных.

В следующем коде показаны эти действия. Предположим, что DisplayProperty — это функция, которая отображает значение PROPVARIANT.

HRESULT EnumerateMetadata(IMFMediaSource *pSource)
{
    IPropertyStore *pProps = NULL;

    HRESULT hr = MFGetService(
        pSource, MF_PROPERTY_HANDLER_SERVICE, IID_PPV_ARGS(&pProps));

    if (FAILED(hr))
    {
        goto done;
    }

    DWORD cProps;

    hr = pProps->GetCount(&cProps);
    if (FAILED(hr))
    {
        goto done;
    }

    for (DWORD i = 0; i < cProps; i++)
    {
        PROPERTYKEY key;
        hr = pProps->GetAt(i, &key);
        if (FAILED(hr))
        {
            goto done;
        }

        PROPVARIANT pv;

        hr = pProps->GetValue(key, &pv);
        if (FAILED(hr))
        {
            goto done;
        }

        DisplayProperty(key, pv);
        PropVariantClear(&pv);
    }

done:
    SafeRelease(&pProps);
    return hr;
}

Список ключей свойств метаданных см. в разделе Свойства метаданных для файлов мультимедиа.

метаданных мультимедиа