MFEnumDeviceSources-Funktion (mfidl.h)
Listet eine Liste von Audio- oder Videoaufnahmegeräten auf.
Syntax
HRESULT MFEnumDeviceSources(
[in] IMFAttributes *pAttributes,
[out] IMFActivate ***pppSourceActivate,
[out] UINT32 *pcSourceActivate
);
Parameter
[in] pAttributes
Zeiger auf einen Attributspeicher, der Suchkriterien enthält. Um den Attributspeicher zu erstellen, rufen Sie MFCreateAttributes auf. Legen Sie mindestens eines der folgenden Attribute für den Attributspeicher fest:
[out] pppSourceActivate
Empfängt ein Array von IMFActivate-Schnittstellenzeigern . Jeder Zeiger stellt ein Aktivierungsobjekt für eine Medienquelle dar. Die Funktion ordnet den Arbeitsspeicher für das Array zu. Der Aufrufer muss die Zeiger im Array freigeben und CoTaskMemFree aufrufen, um den Arbeitsspeicher für das Array freizugeben.
[out] pcSourceActivate
Empfängt die Anzahl der Elemente im pppSourceActivate-Array . Wenn keine Erfassungsgeräte den Suchkriterien entsprechen, erhält dieser Parameter den Wert 0.
Rückgabewert
Wenn diese Funktion erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.
Hinweise
Jeder zurückgegebene IMFActivate-Zeiger stellt ein Erfassungsgerät dar und kann verwendet werden, um eine Medienquelle für dieses Gerät zu erstellen. Sie können auch den IMFActivate-Zeiger verwenden, um Attribute abzufragen, die das Gerät beschreiben. Die folgenden Attribute können festgelegt werden:
attribute | BESCHREIBUNG |
---|---|
MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME | Der Anzeigename des Geräts. |
MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE | Die Haupttyp- und Untertyp-GUIDs, die das Ausgabeformat des Geräts beschreiben. |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE | Der Typ des Aufnahmegeräts (Audio oder Video). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID | Die Zeichenfolge des Audioendpunkts. (Nur Audiogeräte.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY | Die Gerätekategorie. (Nur Videogeräte.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE | Gibt an, ob es sich bei einem Gerät um ein Hardware- oder Softwaregerät handelt. (Nur Videogeräte.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK | Die symbolische Verknüpfung für den Gerätetreiber. (Nur Videogeräte.) |
Um eine Medienquelle aus einem IMFActivate-Zeiger zu erstellen, rufen Sie die IMFActivate::ActivateObject-Methode auf.
Beispiele
Im folgenden Beispiel werden die Videoaufnahmegeräte im System aufgelistet und eine Medienquelle für das erste Gerät in der Liste erstellt.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | mfidl.h |
Bibliothek | Mf.lib |
DLL | Mf.dll |