Partilhar via


Provedores de metadados do Shell

A partir do Windows 7, o Microsoft Media Foundation expõe metadados através da interfaceIPropertyStore.

Os metadados obtidos usando o processo definido neste tópico só devem ser usados para acesso somente leitura. Não há suporte para gravação de dados usando esse processo. Você pode criar um IPropertyStore objeto para fins de escrita usando um identificador de classe (CLSID) obtido de PSLookupPropertyHandlerCLSID.

Leitura de metadados

Para ler metadados de uma fonte de mídia, execute as seguintes etapas:

  1. Obtenha um ponteiro para a interface IMFMediaSource da fonte de mídia. Você pode usar a interface IMFSourceResolver para obter um ponteiro de IMFMediaSource.
  2. Chame MFGetService na fonte de mídia para obter um ponteiro para o interface IPropertyStore. No parâmetro guidService de MFGetService, especifique o valor MF_PROPERTY_HANDLER_SERVICE. Se a origem não suportar a interface IPropertyStore, MFGetService retornará MF_E_UNSUPPORTED_SERVICE.
  3. Chame IPropertyStore métodos para enumerar as propriedades de metadados.

O código a seguir mostra essas etapas. Suponha que DisplayProperty é uma função que exibe um valor de 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;
}

Para obter uma lista de chaves de propriedade de metadados, consulte Propriedades de metadados para arquivos de mídia.

de metadados de mídia