EVT_SERCX2_SYSTEM_DMA_TRANSMIT_DRAIN_FIFO función de devolución de llamada (sercx.h)
La función de devolución de llamada de eventos
Sintaxis
EVT_SERCX2_SYSTEM_DMA_TRANSMIT_DRAIN_FIFO EvtSercx2SystemDmaTransmitDrainFifo;
void EvtSercx2SystemDmaTransmitDrainFifo(
[in] SERCX2SYSTEMDMATRANSMIT SystemDmaTransmit
)
{...}
Parámetros
[in] SystemDmaTransmit
Identificador de SERCX2SYSTEMDMATRANSMIT a un objeto system-DMA-transmit. Anteriormente, el controlador de controlador serie llamó al método SerCx2SystemDmaTransmitCreate para crear este objeto.
Valor devuelto
Ninguno
Observaciones
El controlador de controlador serie puede, como opción, implementar esta función. Si el controlador implementa esta función, también debe implementar el EvtSerCx2SystemDmaTransmitCancelDrainFifo y EvtSerCx2SystemDmaTransmitPurgeFifo funciones de devolución de llamada de eventos. Un controlador que implementa estas funciones los registra en el SerCx2SystemDmaTransmitCreate llamada que crea el objeto system-DMA-transmit.
SerCx2 llama a la función EvtSerCx2SystemDmaTransmitDrainFifo, si se implementa, para purgar la transmisión fiFO en el hardware del controlador serie al final de una transacción system-DMA-transmit. Esta función garantiza que los bytes de datos que permanecen en fiFO se transmiten al dispositivo periférico conectado en serie. Después de transmitir el último byte desde FIFO, la función EvtSerCx2SystemDmaTransmitDrainFifo llama al método SerCx2SystemDmaTransmitDrainFifoComplete para notificar a SerCx2.
Si el controlador del controlador serie implementa una función EvtSerCx2SystemDmaTransmitDrainFifo, SerCx2 no completa una solicitud de escritura pendiente (IRP_MJ_WRITE) hasta que el controlador llame a SerCx2SystemDmaTransmitDrainFifoComplete.
Si el controlador serie tiene un FIFO de hardware (o un mecanismo de almacenamiento en búfer similar) para contener datos de transmisión, el controlador debe implementar una función EvtSerCx2SystemDmaTransmitDrainFifo. De lo contrario, SerCx2 no puede confirmar que la transmisión FIFO se ha purgado antes de que se complete la solicitud de escritura pendiente. En su lugar, SerCx2 completa esta solicitud después del último byte del búfer de escritura se escribe en la transmisión FIFO. No puede haber ninguna garantía de que los datos escritos en la transmisión FIFO se transmitan sin un retraso significativo. Los datos que permanezcan en el FIFO después de que se complete la solicitud de escritura se pueden perder antes de que se puedan transmitir al dispositivo periférico conectado en serie. Esta pérdida de datos inesperada en una solicitud de escritura completada correctamente puede crear problemas de confiabilidad para el controlador periférico.
Para obtener más información, vea SerCx2 System-DMA-Transmit Transactions.
Ejemplos
Para definir un EvtSerCx2SystemDmaTransmitDrainFifo función de devolución de llamada, primero debe proporcionar una declaración de función que identifique el tipo de función de devolución de llamada que está definiendo. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada ayuda a Análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.
Por ejemplo, para definir un EvtSerCx2SystemDmaTransmitDrainFifo función de devolución de llamada denominada MySystemDmaTransmitDrainFifo
, use el tipo de función EVT_SERCX2_SYSTEM_DMA_TRANSMIT_DRAIN_FIFO, como se muestra en este ejemplo de código:
EVT_SERCX2_SYSTEM_DMA_TRANSMIT_DRAIN_FIFO MySystemDmaTransmitDrainFifo;
A continuación, implemente la función de devolución de llamada de la siguiente manera:
_Use_decl_annotations_
VOID
MySystemDmaTransmitDrainFifo(
SERCX2SYSTEMDMATRANSMIT SystemDmaTransmit
)
{...}
El tipo de función EVT_SERCX2_SYSTEM_DMA_TRANSMIT_DRAIN_FIFO se define en el archivo de encabezado Sercx.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función EVT_SERCX2_SYSTEM_DMA_TRANSMIT_DRAIN_FIFO en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte Declaración de funciones mediante tipos de rol de función para controladores kmDF. Para obtener más información sobre Use_decl_annotations, vea Anotación del comportamiento de la función.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible a partir de Windows 8.1. |
de la plataforma de destino de |
Escritorio |
encabezado de |
sercx.h |
irQL | Se llama a irQL <= DISPATCH_LEVEL. |
Consulte también
EvtSerCx2SystemDmaTransmitCancelDrainFifo