Função MFEnumDeviceSources (mfidl.h)
Enumera uma lista de dispositivos de captura de áudio ou vídeo.
Sintaxe
HRESULT MFEnumDeviceSources(
[in] IMFAttributes *pAttributes,
[out] IMFActivate ***pppSourceActivate,
[out] UINT32 *pcSourceActivate
);
Parâmetros
[in] pAttributes
Ponteiro para um repositório de atributos que contém critérios de pesquisa. Para criar o repositório de atributos, chame MFCreateAttributes. Defina um ou mais dos seguintes atributos no repositório de atributos:
[out] pppSourceActivate
Recebe uma matriz de ponteiros de interface IMFActivate . Cada ponteiro representa um objeto de ativação para uma fonte de mídia. A função aloca a memória para a matriz. O chamador deve liberar os ponteiros na matriz e chamar CoTaskMemFree para liberar a memória da matriz.
[out] pcSourceActivate
Recebe o número de elementos na matriz pppSourceActivate . Se nenhum dispositivo de captura corresponder aos critérios de pesquisa, esse parâmetro receberá o valor 0.
Retornar valor
Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Comentários
Cada ponteiro IMFActivate retornado representa um dispositivo de captura e pode ser usado para criar uma fonte de mídia para esse dispositivo. Você também pode usar o ponteiro IMFActivate para consultar atributos que descrevem o dispositivo. Os seguintes atributos podem ser definidos:
Atributo | Descrição |
---|---|
MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME | O nome de exibição do dispositivo. |
MF_DEVSOURCE_ATTRIBUTE_MEDIA_TYPE | O tipo principal e os GUIDs de subtipo que descrevem o formato de saída do dispositivo. |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE | O tipo de dispositivo de captura (áudio ou vídeo). |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID | A cadeia de caracteres de ID do ponto de extremidade de áudio. (Somente dispositivos de áudio.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_CATEGORY | A categoria do dispositivo. (Somente dispositivos de vídeo.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_HW_SOURCE | Se um dispositivo é um dispositivo de hardware ou software. (Somente dispositivos de vídeo.) |
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK | O link simbólico para o driver de dispositivo. (Somente dispositivos de vídeo.) |
Para criar uma fonte de mídia de um ponteiro IMFActivate , chame o método IMFActivate::ActivateObject .
Exemplos
O exemplo a seguir enumera os dispositivos de captura de vídeo no sistema e cria uma fonte de mídia para o primeiro dispositivo na 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 | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | mfidl.h |
Biblioteca | Mf.lib |
DLL | Mf.dll |