Fournisseurs de métadonnées shell

À partir de Windows 7, Microsoft Media Foundation expose les métadonnées via l’interface IPropertyStore .

Les métadonnées obtenues à l’aide du processus défini dans cette rubrique ne doivent être utilisées que pour l’accès en lecture seule. L’écriture de données à l’aide de ce processus n’est pas prise en charge. Vous pouvez créer un objet IPropertyStore à des fins d’écriture à l’aide d’un identificateur de classe (CLSID) obtenu à partir de PSLookupPropertyHandlerCLSID.

Lecture des métadonnées

Pour lire les métadonnées d’une source multimédia, procédez comme suit :

  1. Obtenez un pointeur vers l’interface IMFMediaSource de la source multimédia. Vous pouvez utiliser l’interface IMFSourceResolver pour obtenir un pointeur IMFMediaSource .
  2. Appelez MFGetService sur la source multimédia pour obtenir un pointeur vers l’interface IPropertyStore . Dans le paramètre guidService de MFGetService, spécifiez la valeur MF_PROPERTY_HANDLER_SERVICE. Si la source ne prend pas en charge l’interface IPropertyStore , MFGetService retourne MF_E_UNSUPPORTED_SERVICE.
  3. Appelez les méthodes IPropertyStore pour énumérer les propriétés de métadonnées.

Le code suivant illustre ces étapes. Supposons que DisplayProperty soit une fonction qui affiche une valeur 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;
}

Pour obtenir la liste des clés de propriété de métadonnées, consultez Propriétés des métadonnées pour les fichiers multimédias.

Métadonnées de média