Fungsi MFEnumDeviceSources (mfidl.h)
Menghitung daftar perangkat pengambilan audio atau video.
Sintaks
HRESULT MFEnumDeviceSources(
[in] IMFAttributes *pAttributes,
[out] IMFActivate ***pppSourceActivate,
[out] UINT32 *pcSourceActivate
);
Parameter
[in] pAttributes
Penunjuk ke penyimpanan atribut yang berisi kriteria pencarian. Untuk membuat penyimpanan atribut, panggil MFCreateAttributes. Atur satu atau beberapa atribut berikut di penyimpanan atribut:
[out] pppSourceActivate
Menerima array penunjuk antarmuka IMFActivate . Setiap penunjuk mewakili objek aktivasi untuk sumber media. Fungsi mengalokasikan memori untuk array. Pemanggil harus melepaskan pointer dalam array dan memanggil CoTaskMemFree untuk membebaskan memori untuk array.
[out] pcSourceActivate
Menerima jumlah elemen dalam array pppSourceActivate . Jika tidak ada perangkat tangkapan yang cocok dengan kriteria pencarian, parameter ini menerima nilai 0.
Mengembalikan nilai
Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
Setiap penunjuk IMFActivate yang dikembalikan mewakili perangkat pengambilan, dan dapat digunakan untuk membuat sumber media untuk perangkat tersebut. Anda juga dapat menggunakan penunjuk IMFActivate untuk mengkueri atribut yang menjelaskan perangkat. Atribut berikut mungkin diatur:
Atribut | Deskripsi |
---|---|
MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME | Nama tampilan perangkat. |
MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE | Jenis utama dan GUID subjenis yang menjelaskan format output perangkat. |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE | Jenis perangkat pengambilan (audio atau video). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID | String ID titik akhir audio. (Hanya perangkat audio.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY | Kategori perangkat. (Hanya perangkat video.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE | Apakah perangkat adalah perangkat keras atau perangkat lunak. (Hanya perangkat video.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK | Tautan simbolis untuk driver perangkat. (Hanya perangkat video.) |
Untuk membuat sumber media dari penunjuk IMFActivate , panggil metode IMFActivate::ActivateObject .
Contoh
Contoh berikut menghitung perangkat pengambilan video pada sistem dan membuat sumber media untuk perangkat pertama dalam daftar.
HRESULT CreateVideoDeviceSource(IMFMediaSource **ppSource)
{
*ppSource = NULL;
IMFMediaSource *pSource = NULL;
IMFAttributes *pAttributes = NULL;
IMFActivate **ppDevices = NULL;
// Create an attribute store to specify the enumeration parameters.
HRESULT hr = MFCreateAttributes(&pAttributes, 1);
if (FAILED(hr))
{
goto done;
}
// Source type: video capture devices
hr = pAttributes->SetGUID(
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE,
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID
);
if (FAILED(hr))
{
goto done;
}
// Enumerate devices.
UINT32 count;
hr = MFEnumDeviceSources(pAttributes, &ppDevices, &count);
if (FAILED(hr))
{
goto done;
}
if (count == 0)
{
hr = E_FAIL;
goto done;
}
// Create the media source object.
hr = ppDevices[0]->ActivateObject(IID_PPV_ARGS(&pSource));
if (FAILED(hr))
{
goto done;
}
*ppSource = pSource;
(*ppSource)->AddRef();
done:
SafeRelease(&pAttributes);
for (DWORD i = 0; i < count; i++)
{
SafeRelease(&ppDevices[i]);
}
CoTaskMemFree(ppDevices);
SafeRelease(&pSource);
return hr;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 7 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 R2 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | mfidl.h |
Pustaka | Mf.lib |
DLL | Mf.dll |