Compartilhar via


Método IMFSchemeHandler::BeginCreateObject (mfidl.h)

Inicia uma solicitação assíncrona para criar um objeto de uma URL.

Quando o Resolvedor de Origem cria uma fonte de mídia de uma URL, ele passa a solicitação para um manipulador de esquema. O manipulador de esquema pode criar uma fonte de mídia diretamente da URL ou pode retornar um fluxo de bytes. Se ele retornar um fluxo de bytes, o resolvedor de origem usará um manipulador de fluxo de bytes para criar a fonte de mídia do fluxo de bytes.

Sintaxe

HRESULT BeginCreateObject(
  [in]  LPCWSTR          pwszURL,
  [in]  DWORD            dwFlags,
  [in]  IPropertyStore   *pProps,
  [out] IUnknown         **ppIUnknownCancelCookie,
  [in]  IMFAsyncCallback *pCallback,
  [in]  IUnknown         *punkState
);

Parâmetros

[in] pwszURL

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

[in] dwFlags

Um OR bit a bit de um ou mais sinalizadores. Consulte Sinalizadores de resolvedor de origem.

[in] pProps

Um ponteiro para a interface IPropertyStore de um repositório de propriedades. O manipulador de esquema pode usar esse 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] ppIUnknownCancelCookie

Recebe um ponteiro IUnknown ou o valor NULL. Se o valor não for NULL, você poderá cancelar a operação assíncrona passando esse ponteiro para o método IMFSchemeHandler::CancelObjectCreation . O chamador deve liberar a interface. Esse parâmetro pode ser NULL, nesse caso, o ponteiro IUnknown não é retornado ao chamador.

[in] pCallback

Um ponteiro para a interface IMFAsyncCallback de um objeto de retorno de chamada. O chamador deve implementar essa interface.

[in] punkState

Um ponteiro para a interface IUnknown de um objeto de estado, definido pelo chamador. Este parâmetro pode ser NULL. Você pode usar esse objeto para armazenar informações de estado. O objeto é retornado ao chamador quando o retorno de chamada é invocado.

Valor retornado

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.
E_ACCESSDENIED
Não é possível abrir a URL com o acesso solicitado (leitura ou gravação).
MF_E_UNSUPPORTED_BYTESTREAM_TYPE
Tipo de fluxo de bytes sem suporte.

Comentários

O parâmetro dwFlags deve conter o sinalizador MF_RESOLUTION_MEDIASOURCE ou o sinalizador MF_RESOLUTION_BYTESTREAM . Se o sinalizador MF_RESOLUTION_MEDIASOURCE estiver definido, o manipulador de esquema poderá criar a fonte de mídia diretamente da URL ou pode criar um fluxo de bytes. O tipo de objeto é retornado no parâmetro pObjectType do método IMFSchemeHandler::EndCreateObject . Se o manipulador de esquema retornar um fluxo de bytes, o resolvedor de origem passará o fluxo de bytes para um manipulador de fluxo de bytes, o que criará a fonte de mídia do fluxo de bytes.

Se o sinalizador MF_RESOLUTION_BYTESTREAM estiver definido, o manipulador de esquema tentará criar um fluxo de bytes da URL. No entanto, se o manipulador de esquema for projetado para criar uma fonte de mídia diretamente, em vez de um fluxo de bytes, o método falhará.

A tabela a seguir resume o comportamento desses dois sinalizadores quando passados para esse método:

Sinalizador Objeto criado
MF_RESOLUTION_MEDIASOURCE Fonte de mídia ou fluxo de bytes
MF_RESOLUTION_BYTESTREAM Fluxo de bytes
 

Os sinalizadores MF_RESOLUTION_MEDIASOURCE e MF_RESOLUTION_BYTESTREAM podem ser combinados, embora nesse caso seja redundante.

Quando a operação for concluída, o manipulador de esquema chamará o método IMFAsyncCallback::Invoke . O método Invoke deve chamar IMFSchemeHandler::EndCreateObject para obter um ponteiro para o objeto criado.

Requisitos

   
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

IMFSchemeHandler

Manipuladores de esquema e manipuladores de Byte-Stream