Shell-metagegevensproviders
Vanaf Windows 7 maakt Microsoft Media Foundation metagegevens beschikbaar via de interface IPropertyStore.
Metagegevens die zijn verkregen met behulp van het proces dat in dit onderwerp is gedefinieerd, mogen alleen worden gebruikt voor alleen-lezentoegang. Het schrijven van gegevens met dit proces wordt niet ondersteund. U kunt een IPropertyStore--object maken voor schrijfdoeleinden met behulp van een klasse-id (CLSID) die is verkregen uit PSLookupPropertyHandlerCLSID.
Metagegevens lezen
Voer de volgende stappen uit om metagegevens van een mediabron te lezen:
- Vraag een aanwijzer naar de IMFMediaSource interface van de mediabron. U kunt de interface IMFSourceResolver gebruiken om een IMFMediaSource- aanwijzer op te halen.
- Roep MFGetService- aan op de mediabron om een aanwijzer op te halen naar de IPropertyStore interface. Geef in de parameter guidService van MFGetService-de waarde MF_PROPERTY_HANDLER_SERVICEop. Als de bron de IPropertyStore-interface niet ondersteunt, retourneert MFGetServiceMF_E_UNSUPPORTED_SERVICE.
- Roep IPropertyStore methoden aan om de metagegevenseigenschappen op te sommen.
In de volgende code ziet u deze stappen. Stel dat DisplayProperty
een functie is die een PROPVARIANT- waarde weergeeft.
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;
}
Zie Eigenschappen van metagegevens voor mediabestandenvoor een lijst met metagegevenseigenschapssleutels.
Verwante onderwerpen