IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion (wudfusb.h)
[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los nuevos controladores UMDF deben escribirse mediante UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción a UMDF.]
La onReaderCompletion de un controlador función de devolución de llamada de eventos informa al controlador de que un lector continuo ha completado correctamente una solicitud de lectura.
Sintaxis
void OnReaderCompletion(
[in] IWDFUsbTargetPipe *pPipe,
[in] IWDFMemory *pMemory,
[in] SIZE_T NumBytesTransferred,
[in] PVOID Context
);
Parámetros
[in] pPipe
Puntero a la interfaz IWDFUsbTargetPipe para la canalización USB en la que el controlador ha habilitado un lector continuo.
[in] pMemory
Puntero a la interfaz IWDFMemory de para un búfer de lectura que contiene datos leídos desde la canalización USB.
[in] NumBytesTransferred
Número de bytes que contiene el búfer de lectura.
[in] Context
Puntero a la información de contexto proporcionada por el controlador que proporcionó el controlador cuando se llamó anteriormente a IWDFUsbTargetPipe2::ConfigureContinuousReader.
Valor devuelto
Ninguno
Observaciones
Para registrar una función de devolución de llamada IUsbTargetPipeContinuousReaderCallbackReadComplete::OnReaderCompletion función de devolución de llamada, el controlador debe proporcionar un puntero al IUsbTargetPipeContinuousReaderCallbackReadComplete cuando llama a IWDFUsbTargetPipe2::ConfigureContinuousReader.
Si un controlador ha creado un lector continuo para una canalización USB, el marco llama al onReaderCompletion del controlador función de devolución de llamada cada vez que el destino de E/S del controlador completa correctamente una solicitud de lectura. Si el destino de E/S no completa correctamente una solicitud, el marco llama a la IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure función de devolución de llamada.
Para acceder al búfer que contiene datos leídos desde el dispositivo, el controlador puede llamar a IWDFMemory::GetDataBuffer. El marco escribe los datos en el búfer, después del encabezado definido por el parámetro HeaderLength de IWDFUsbTargetPipe2::ConfigureContinuousReader. Tenga en cuenta que el puntero que IWDFMemory::GetDataBuffer devuelve puntos al principio del encabezado, pero el OnReaderCompletion función de devolución de llamada parámetro NumBytesTransferred no incluye la longitud del encabezado.
De forma predeterminada, el marco elimina el objeto de memoria del búfer después de que la OnReaderCompletion función de devolución de llamada devuelva. Sin embargo, es posible que desee que el objeto de memoria permanezca válido después de que se devuelva la función de devolución de llamada. Por ejemplo, es posible que desee que el controlador almacene el puntero de interfaz del objeto de memoria en el espacio de contexto del objeto de canalización para que el controlador pueda procesar el contenido del objeto de memoria después de que se devuelva la función de devolución de llamada. Para ampliar la duración del objeto de memoria, la función de devolución de llamada debe llamar al método IWDFMemory::AddRef del búfer. Posteriormente, el controlador debe llamar al método IWDFMemory::Release del búfer para que el marco pueda eliminar el objeto.
El marco sincroniza las llamadas a la OnReaderCompletion y IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure funciones de devolución de llamada según las reglas siguientes:
- Estas funciones de devolución de llamada no se ejecutan simultáneamente para una canalización USB individual.
- Si el controlador crea varios lectores continuos para varias canalizaciones USB, con varias onReaderCompletion y onReaderFailure funciones de devolución de llamada, las varias funciones de devolución de llamada se pueden ejecutar simultáneamente.
- Si el controlador ha especificado el valor predeterminado NumPendingReads cuando llama a IWDFUsbTargetPipe2::ConfigureContinuousReader (o si especifica cualquier NumPendingReads valor mayor que 1) y si se completa una solicitud de lectura mientras se completa la función de devolución de llamada OnReaderCompletion El marco puede llamar a la OnReaderCompletion función de devolución de llamada de nuevo antes de que se devuelva la función de devolución de llamada.
- El marco de trabajo no sincroniza estas funciones de devolución de llamada con ninguna otra función de devolución de llamada.
Para obtener más información sobre el OnReaderCompletion función de devolución de llamada y destinos de E/S USB, consulte Control de un destino de E/S USB.
Requisitos
Requisito | Valor |
---|---|
fin del soporte técnico | No disponible en UMDF 2.0 y versiones posteriores. |
de la plataforma de destino de | Escritorio |
versión mínima de UMDF | 1.9 |
encabezado de | wudfusb.h (incluya Wudfusb.h) |
Consulte también
IUsbTargetPipeContinuousReaderCallbackReadComplete
IUsbTargetPipeContinuousReaderCallbackReadersFailed::OnReaderFailure