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 :
- Obtenez un pointeur vers l’interface IMFMediaSource de la source multimédia. Vous pouvez utiliser l’interface IMFSourceResolver pour obtenir un pointeur IMFMediaSource .
- 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.
- 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.
Rubriques connexes