Método IAsyncReader::Request (strmif.h)
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
El Request
método pone en cola una solicitud asincrónica de datos.
Sintaxis
HRESULT Request(
IMediaSample *pSample,
[in] DWORD_PTR dwUser
);
Parámetros
pSample
Puntero a la interfaz IMediaSample de un ejemplo multimedia proporcionado por el autor de la llamada.
[in] dwUser
Especifica un valor arbitrario que se devuelve cuando se completa la solicitud.
Valor devuelto
Devuelve un valor HRESULT . Estos son algunos de los valores posibles.
Código devuelto | Descripción |
---|---|
|
Correcto. |
|
El búfer no está alineado correctamente. |
|
El ejemplo no tenía marca de tiempo. |
|
El pin está vaciado. |
|
La posición de inicio solicitada ha pasado el final del archivo. |
|
Memoria insuficiente. |
Comentarios
Antes de llamar a este método, recupere un ejemplo multimedia del asignador del pin. Marca de tiempo la muestra con los desplazamientos de bytes que solicita, primero y último inclusive, multiplicado por 10 000 000. Los desplazamientos de bytes son relativos al inicio de la secuencia.
Las posiciones de inicio y detención deben coincidir con la alineación que se decidió cuando se conectaron las patillas. De lo contrario, el método podría devolver VFW_E_BADALIGN. Si la alineación acordada es más gruesa que la alineación real de la secuencia, la posición de detención podría superar la duración real. Si es así, el método redondea la posición de detención hacia abajo hasta la alineación real.
Aunque técnicamente es una infracción de las reglas COM, el autor de la llamada debe dejar un recuento de referencias pendiente en el ejemplo. El Request
método no llama a AddRef o Release, por lo que el recuento de referencias es necesario para mantener el ejemplo activo.
El método devuelve antes de que se complete la solicitud. Llame al método IAsyncReader::WaitForNext para esperar a la solicitud. No reutilice el ejemplo de medios original mientras la solicitud está pendiente. El método WaitForNext devuelve un puntero al ejemplo original. Si la solicitud se realizó correctamente, el ejemplo contiene los datos solicitados. El método WaitForNext también devuelve cualquier valor especificado en el parámetro dwUser . El autor de la llamada puede usar este valor para identificar el ejemplo.
Ejemplos
En el ejemplo siguiente se muestra una posible función auxiliar para un pin de entrada, para poner en cola las solicitudes:
C++ |
---|
|
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | strmif.h (incluya Dshow.h) |
Library | Strmiids.lib |