Metodo IAsyncReader::Request (strmif.h)
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Il Request
metodo accoda una richiesta asincrona per i dati.
Sintassi
HRESULT Request(
IMediaSample *pSample,
[in] DWORD_PTR dwUser
);
Parametri
pSample
Puntatore all'interfaccia IMediaSample di un esempio multimediale fornito dal chiamante.
[in] dwUser
Specifica un valore arbitrario restituito al termine della richiesta.
Valore restituito
Restituisce un valore HRESULT . Di seguito sono indicati alcuni valori possibili.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
Il buffer non è allineato correttamente. |
|
L'esempio non è stato contrassegnato come timestamp. |
|
Il pin sta scaricando. |
|
La posizione iniziale richiesta è passata alla fine del file. |
|
Memoria insufficiente. |
Commenti
Prima di chiamare questo metodo, recuperare un esempio multimediale dall'allocatore del pin. Timestamp dell'esempio con gli offset di byte richiesti, primo e ultimo inclusivo, moltiplicato per 10.000.000. Gli offset di byte sono relativi all'inizio del flusso.
Le posizioni di inizio e arresto devono corrispondere all'allineamento deciso quando i pin sono connessi. In caso contrario, il metodo potrebbe restituire VFW_E_BADALIGN. Se l'allineamento concordato è più grossolano rispetto all'allineamento effettivo del flusso, la posizione di arresto potrebbe superare la durata reale. In tal caso, il metodo arrotonda la posizione di arresto fino all'allineamento effettivo.
Sebbene sia tecnicamente una violazione delle regole COM, il chiamante deve lasciare un numero di riferimenti in sospeso sull'esempio. Il Request
metodo non chiama AddRef o Release, quindi il conteggio dei riferimenti è necessario per mantenere attivo l'esempio.
Il metodo restituisce prima del completamento della richiesta. Chiamare il metodo IAsyncReader::WaitForNext per attendere la richiesta. Non riutilizzare l'esempio multimediale originale mentre la richiesta è in sospeso. Il metodo WaitForNext restituisce un puntatore all'esempio originale. Se la richiesta ha esito positivo, l'esempio contiene i dati richiesti. Il metodo WaitForNext restituisce anche qualsiasi valore specificato nel parametro dwUser . Il chiamante può usare questo valore per identificare l'esempio.
Esempio
Nell'esempio seguente viene illustrata una possibile funzione helper per un pin di input, per le richieste di coda:
C++ |
---|
|
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | strmif.h (include Dshow.h) |
Libreria | Strmiids.lib |