Metodo IMFMediaEngineExtension::BeginCreateObject (mfmediaengine.h)
Avvia una richiesta asincrona per creare un flusso di byte o un'origine multimediale.
Sintassi
HRESULT BeginCreateObject(
[in] BSTR bstrURL,
[in] IMFByteStream *pByteStream,
[in] MF_OBJECT_TYPE type,
[out] IUnknown **ppIUnknownCancelCookie,
[in] IMFAsyncCallback *pCallback,
[in, optional] IUnknown *punkState
);
Parametri
[in] bstrURL
URL della risorsa multimediale.
[in] pByteStream
Puntatore all'interfaccia IMFByteStream .
Se il parametro di tipo è uguale a MF_OBJECT_BYTESTREAM, questo parametro è NULL.
Se il tipo è uguale a MF_OBJECT_MEDIASOURCE, questo parametro contiene un puntatore a un flusso di byte o è NULL. Per ulteriori informazioni, vedere la sezione Osservazioni.
[in] type
Membro dell'enumerazione MF_OBJECT_TYPE che specifica il tipo di oggetto da creare.
Valore | Significato |
---|---|
|
Creare un flusso di byte. Il flusso di byte deve supportare l'interfaccia IMFByteStream . |
|
Creare un'origine multimediale. L'origine multimediale deve supportare l'interfaccia IMFMediaSource . |
[out] ppIUnknownCancelCookie
Riceve un puntatore all'interfaccia IUnknown . Questo puntatore può essere utilizzato per annullare l'operazione asincrona passando il puntatore al metodo IMFMediaEngineExtension::CancelObjectCreation .
Il chiamante deve rilasciare l'interfaccia. Questo parametro può essere NULL.
[in] pCallback
Puntatore all'interfaccia IMFAsyncCallback . Questa interfaccia viene usata per segnalare il completamento dell'operazione asincrona.
[in, optional] punkState
Puntatore all'interfaccia IUnknown di un oggetto implementato dal chiamante. È possibile utilizzare questo oggetto per contenere le informazioni sullo stato per il callback. L'oggetto viene restituito al chiamante quando viene richiamato il callback. Questo parametro può essere NULL.
Valore restituito
Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
Questo metodo richiede all'oggetto di creare un flusso di byte o un'origine multimediale, a seconda del valore del parametro di tipo :
- Se il tipo è MF_OBJECT_BYTESTREAM, il metodo crea un flusso di byte per l'URL specificato in bstrURL. In questo caso, il parametro pByteStream è NULL.
- Se il tipo è MF_OBJECT_MEDIASOURCE, il metodo crea un'origine multimediale, usando il flusso di byte specificato nel parametro pByteStream . Si noti che pByteStream può anche essere NULL in questo caso.
Note sull'implementazione
Un'estensione del motore multimediale può essere usata per supportare un oggetto flusso di byte personalizzato, un'origine multimediale personalizzata o entrambi. Per un flusso di byte, creare l'oggetto flusso di byte quando il tipo è uguale a MF_OBJECT_BYTESTREAM. Per un'origine multimediale, creare l'origine quando il tipo è uguale a MF_OBJECT_MEDIASOURCE.Per caricare un URL, il motore multimediale esegue la procedura seguente:
- Provare a creare un flusso di byte dall'URL.
- Se viene creato correttamente un flusso di byte, provare a creare un'origine multimediale dal flusso di byte.
- Se non è possibile creare un flusso di byte, provare a creare un'origine multimediale direttamente dall'URL.
A ogni passaggio, il motore multimediale chiama IMFMediaEngineExtension::BeginCreateObject sull'oggetto di estensione. Se il metodo BeginCreateObject ha esito negativo, il motore multimediale prova il resolver di origine.
Nel metodo BeginCreateObject è possibile scegliere di gestire uno dei casi seguenti:
- Il parametro di tipo è MF_OBJECT_BYTESTREAM. Creare un flusso di byte dall'URL.
- Il parametro di tipo è MF_OBJECT_MEDIASOURCE e pByteStream punta a un flusso di byte. Usare il flusso di byte per creare un'origine multimediale.
- Il parametro di tipo è MF_OBJECT_MEDIASOURCE e pByteStream è NULL. Creare un'origine multimediale dall'URL.
Restituisce un codice di errore per tutti i casi non gestiti.
Esempi:
- Per supportare un formato multimediale personalizzato, implementare un'origine multimediale. Se l'origine multimediale non richiede alcuna implementazione speciale del flusso di byte, creare l'origine multimediale quando il tipo è MF_OBJECT_MEDIASOURCE e pByteStream non è NULL. In questo caso verrà usata l'implementazione standard del flusso di byte di Microsoft Media Foundation.
- Per supportare uno schema URL personalizzato, gestire il caso in cui il tipo è MF_OBJECT_BYTESTREAM e restituire un oggetto flusso di byte in grado di leggere l'URL.
Se il metodo BeginCreateObject ha esito positivo, l'operazione deve essere eseguita in modo asincrono. Al termine dell'operazione, chiamare il metodo IMFAsyncCallback::Invoke sull'interfaccia di callback specificata in pCallback. Il motore multimediale completa l'operazione chiamando IMFMediaEngineExtension::EndCreateObject.
Requisiti
Client minimo supportato | Windows 8 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2012 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | mfmediaengine.h |