Fonction MFEnumDeviceSources (mfidl.h)
Énumère les appareils de capture audio ou vidéo.
Syntaxe
HRESULT MFEnumDeviceSources(
[in] IMFAttributes *pAttributes,
[out] IMFActivate ***pppSourceActivate,
[out] UINT32 *pcSourceActivate
);
Paramètres
[in] pAttributes
Pointeur vers un magasin d’attributs qui contient des critères de recherche. Pour créer le magasin d’attributs, appelez MFCreateAttributes. Définissez un ou plusieurs des attributs suivants sur le magasin d’attributs :
[out] pppSourceActivate
Reçoit un tableau de pointeurs d’interface IMFActivate . Chaque pointeur représente un objet d’activation pour une source multimédia. La fonction alloue la mémoire pour le tableau. L’appelant doit libérer les pointeurs dans le tableau et appeler CoTaskMemFree pour libérer la mémoire du tableau.
[out] pcSourceActivate
Reçoit le nombre d’éléments dans le tableau pppSourceActivate . Si aucun appareil de capture ne correspond aux critères de recherche, ce paramètre reçoit la valeur 0.
Valeur retournée
Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.
Remarques
Chaque pointeur IMFActivate retourné représente un appareil de capture et peut être utilisé pour créer une source multimédia pour cet appareil. Vous pouvez également utiliser le pointeur IMFActivate pour interroger les attributs qui décrivent l’appareil. Les attributs suivants peuvent être définis :
Attribut | Description |
---|---|
MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME | Nom complet de l’appareil. |
MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE | GUID de type et de sous-type principaux qui décrivent le format de sortie de l’appareil. |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE | Type de périphérique de capture (audio ou vidéo). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID | Chaîne d’ID de point de terminaison audio. (Appareils audio uniquement.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY | Catégorie d’appareil. (Appareils vidéo uniquement.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE | Indique si un appareil est un appareil matériel ou logiciel. (Appareils vidéo uniquement.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK | Lien symbolique du pilote de périphérique. (Appareils vidéo uniquement.) |
Pour créer une source multimédia à partir d’un pointeur IMFActivate , appelez la méthode IMFActivate ::ActivateObject .
Exemples
L’exemple suivant énumère les appareils de capture vidéo sur le système et crée une source multimédia pour le premier appareil de la liste.
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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | mfidl.h |
Bibliothèque | Mf.lib |
DLL | Mf.dll |