Compartilhar via


Método IMFSourceResolver::CreateObjectFromURL (mfidl.h)

Cria uma fonte de mídia ou um fluxo de bytes de uma URL. Esse método é síncrono.

Sintaxe

HRESULT CreateObjectFromURL(
  [in]  LPCWSTR        pwszURL,
  [in]  DWORD          dwFlags,
  [in]  IPropertyStore *pProps,
  [out] MF_OBJECT_TYPE *pObjectType,
  [out] IUnknown       **ppObject
);

Parâmetros

[in] pwszURL

Cadeia de caracteres terminada em nulo que contém a URL a ser resolve.

[in] dwFlags

OR bit a bit de um ou mais sinalizadores. Consulte Sinalizadores de resolvedor de origem. Consulte os comentários abaixo.

[in] pProps

Ponteiro para a interface IPropertyStore de um repositório de propriedades. O método passa o repositório de propriedades para o manipulador de esquema ou manipulador de fluxo de bytes que cria o objeto. O manipulador pode usar o repositório de propriedades para configurar o objeto. Este parâmetro pode ser NULL. Para obter mais informações, consulte Configurando uma fonte de mídia.

[out] pObjectType

Recebe um membro da enumeração MF_OBJECT_TYPE , especificando o tipo de objeto que foi criado.

[out] ppObject

Recebe um ponteiro para a interface IUnknown do objeto. O chamador deve liberar a interface.

Retornar valor

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
MF_E_SOURCERESOLVER_MUTUALLY_EXCLUSIVE_FLAGS
O parâmetro dwFlags contém sinalizadores mutuamente exclusivos.
MF_E_UNSUPPORTED_SCHEME
Não há suporte para o esquema de URL.

Comentários

O parâmetro dwFlags deve conter o sinalizador MF_RESOLUTION_MEDIASOURCE ou o sinalizador MF_RESOLUTION_BYTESTREAM , mas não deve conter ambos.

É recomendável que você não defina MF_RESOLUTION_WRITE no argumento de entrada dwFlags , a menos que seja necessário para o seu cenário. Para a maioria dos casos de uso, as fontes de mídia não precisam ser criadas com a funcionalidade de gravação. Criar uma fonte de mídia com capacidade de gravação pode ter uma probabilidade menor de sucesso do que criar uma fonte de mídia sem capacidade de gravação. Isso ocorre porque pode haver verificações mais rigorosas sobre o conteúdo representado pela URL ao criar uma fonte de mídia com capacidade de gravação.

Para arquivos locais, você pode passar o nome do arquivo no parâmetro pwszURL ; o file: esquema não é necessário.

Nota Esse método não pode ser chamado remotamente.
 

Exemplos

//  Create a media source from a URL.
HRESULT CreateMediaSource(PCWSTR sURL, IMFMediaSource **ppSource)
{
    MF_OBJECT_TYPE ObjectType = MF_OBJECT_INVALID;

    IMFSourceResolver* pSourceResolver = NULL;
    IUnknown* pSource = NULL;

    // Create the source resolver.
    HRESULT hr = MFCreateSourceResolver(&pSourceResolver);
    if (FAILED(hr))
    {
        goto done;
    }

    // Use the source resolver to create the media source.

    // Note: For simplicity this sample uses the synchronous method to create 
    // the media source. However, creating a media source can take a noticeable
    // amount of time, especially for a network source. For a more responsive 
    // UI, use the asynchronous BeginCreateObjectFromURL method.

    hr = pSourceResolver->CreateObjectFromURL(
        sURL,                       // URL of the source.
        MF_RESOLUTION_MEDIASOURCE,  // Create a source object.
        NULL,                       // Optional property store.
        &ObjectType,        // Receives the created object type. 
        &pSource            // Receives a pointer to the media source.
        );
    if (FAILED(hr))
    {
        goto done;
    }

    // Get the IMFMediaSource interface from the media source.
    hr = pSource->QueryInterface(IID_PPV_ARGS(ppSource));

done:
    SafeRelease(&pSourceResolver);
    SafeRelease(&pSource);
    return hr;
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho mfidl.h
Biblioteca Mfuuid.lib

Confira também

IMFSourceResolver

Resolvedor de Origem