Penyedia Metadata Shell
Mulai Windows 7, Microsoft Media Foundation memaparkan metadata melalui antarmukaIPropertyStore.
Metadata yang diperoleh menggunakan proses yang ditentukan dalam topik ini hanya boleh digunakan untuk akses baca-saja. Menulis data menggunakan proses ini tidak didukung. Anda dapat membuat objekIPropertyStore untuk tujuan penulisan menggunakan pengidentifikasi kelas (CLSID) yang diperoleh dari PSLookupPropertyHandlerCLSID.
Untuk membaca metadata dari sumber media, lakukan langkah-langkah berikut:
- Dapatkan penunjuk ke antarmukaIMFMediaSourcesumber media. Anda dapat menggunakan antarmukaIMFSourceResolveruntuk mendapatkan pointer IMFMediaSource.
- PanggilMFGetServicedi sumber media untuk mendapatkan pointer ke antarmukaIPropertyStore. Dalam parameter guidServiceMFGetService, tentukan nilai MF_PROPERTY_HANDLER_SERVICE. Jika sumber tidak mendukung antarmuka IPropertyStore, MFGetService mengembalikan MF_E_UNSUPPORTED_SERVICE.
- Panggil metodeIPropertyStoreuntuk menghitung properti metadata.
Kode berikut menunjukkan langkah-langkah ini. Asumsikan bahwa DisplayProperty
adalah fungsi yang menampilkan nilai 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;
}
Untuk daftar kunci properti metadata, lihat Properti Metadata untuk File Media.