Funzione MFEnumDeviceSources (mfidl.h)
Enumera un elenco di dispositivi di acquisizione audio o video.
Sintassi
HRESULT MFEnumDeviceSources(
[in] IMFAttributes *pAttributes,
[out] IMFActivate ***pppSourceActivate,
[out] UINT32 *pcSourceActivate
);
Parametri
[in] pAttributes
Puntatore a un archivio attributi che contiene criteri di ricerca. Per creare l'archivio attributi, chiamare MFCreateAttributes. Impostare uno o più degli attributi seguenti nell'archivio attributi:
[out] pppSourceActivate
Riceve una matrice di puntatori dell'interfaccia FMActivate . Ogni puntatore rappresenta un oggetto di attivazione per un'origine multimediale. La funzione alloca la memoria per la matrice. Il chiamante deve rilasciare i puntatori nella matrice e chiamare CoTaskMemFree per liberare la memoria per la matrice.
[out] pcSourceActivate
Riceve il numero di elementi nella matrice pppSourceActivate . Se i dispositivi di acquisizione non corrispondono ai criteri di ricerca, questo parametro riceve il valore 0.
Valore restituito
Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
Ogni puntatore FMActivate restituito rappresenta un dispositivo di acquisizione e può essere usato per creare un'origine multimediale per tale dispositivo. È anche possibile usare il puntatore FMActivate per eseguire query sugli attributi che descrivono il dispositivo. Gli attributi seguenti possono essere impostati:
Attributo | Descrizione |
---|---|
MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME | Nome visualizzato del dispositivo. |
MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE | GUID di tipo principale e sottotipo che descrivono il formato di output del dispositivo. |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE | Tipo di dispositivo di acquisizione (audio o video). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID | Stringa ID endpoint audio. (Solo dispositivi audio). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY | Categoria del dispositivo. (Solo dispositivi video). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE | Indica se un dispositivo è un dispositivo hardware o software. (Solo dispositivi video). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK | Collegamento simbolico per il driver di dispositivo. (Solo dispositivi video). |
Per creare un'origine multimediale da un puntatore FMActivate , chiamare il metodo IMFActivate::ActivateObject .
Esempio
Nell'esempio seguente vengono enumerati i dispositivi di acquisizione video nel sistema e viene creata un'origine multimediale per il primo dispositivo nell'elenco.
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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | mfidl.h |
Libreria | Mf.lib |
DLL | Mf.dll |