Partager via


Fournisseurs de métadonnées Shell

À compter 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 à partir d’une source multimédia, procédez comme suit :

  1. Obtenez un pointeur vers l’interfaceIMFMediaSource de la source multimédia. Vous pouvez utiliser l’interfaceIMFSourceResolver 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 méthodes IPropertyStore pour énumérer les propriétés de métadonnées.

Le code suivant montre ces étapes. Supposons que DisplayProperty est 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.

de métadonnées multimédias