Función MFEnumDeviceSources (mfidl.h)
Enumera una lista de dispositivos de captura de audio o vídeo.
Sintaxis
HRESULT MFEnumDeviceSources(
[in] IMFAttributes *pAttributes,
[out] IMFActivate ***pppSourceActivate,
[out] UINT32 *pcSourceActivate
);
Parámetros
[in] pAttributes
Puntero a un almacén de atributos que contiene criterios de búsqueda. Para crear el almacén de atributos, llame a MFCreateAttributes. Establezca uno o varios de los atributos siguientes en el almacén de atributos:
[out] pppSourceActivate
Recibe una matriz de punteros de interfaz IMFActivate . Cada puntero representa un objeto de activación para un origen multimedia. La función asigna la memoria de la matriz. El llamador debe liberar los punteros de la matriz y llamar a CoTaskMemFree para liberar la memoria de la matriz.
[out] pcSourceActivate
Recibe el número de elementos de la matriz pppSourceActivate . Si ningún dispositivo de captura coincide con los criterios de búsqueda, este parámetro recibe el valor 0.
Valor devuelto
Si esta función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.
Comentarios
Cada puntero IMFActivate devuelto representa un dispositivo de captura y se puede usar para crear un origen multimedia para ese dispositivo. También puede usar el puntero IMFActivate para consultar los atributos que describen el dispositivo. Es posible que se establezcan los siguientes atributos:
Atributo | Descripción |
---|---|
MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME | Nombre para mostrar del dispositivo. |
MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE | Guid de tipo principal y subtipo que describen el formato de salida del dispositivo. |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE | Tipo de dispositivo de captura (audio o vídeo). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID | Cadena de identificador de punto de conexión de audio. (Solo dispositivos de audio). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY | Categoría del dispositivo. (Solo dispositivos de vídeo). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE | Si un dispositivo es un dispositivo de hardware o software. (Solo dispositivos de vídeo). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK | Vínculo simbólico para el controlador de dispositivo. (Solo dispositivos de vídeo). |
Para crear una fuente de medios a partir de un puntero IMFActivate , llame al método IMFActivate::ActivateObject .
Ejemplos
En el ejemplo siguiente se enumeran los dispositivos de captura de vídeo en el sistema y se crea un origen multimedia para el primer dispositivo de la lista.
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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 7 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 R2 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | mfidl.h |
Library | Mf.lib |
Archivo DLL | Mf.dll |