EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION función de devolución de llamada (sercx.h)
La función de devolución de llamada de eventos EvtSerCx2PioTransmitEnableReadyNot ification se llama mediante la versión 2 de la extensión de marco de serie (SerCx2) para permitir que el controlador del controlador serie notifique a SerCx2 cuando la transmisión FIFO en el controlador serie esté lista para aceptar más datos.
Sintaxis
EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION EvtSercx2PioTransmitEnableReadyNotification;
void EvtSercx2PioTransmitEnableReadyNotification(
[in] SERCX2PIOTRANSMIT PioTransmit
)
{...}
Parámetros
[in] PioTransmit
Identificador de SERCX2PIOTRANSMIT a un objeto PIO-transmit. El controlador de controlador serie llamó anteriormente al método SerCx2PioTransmitCreate para crear este objeto.
Valor devuelto
Ninguno
Observaciones
El controlador de controlador serie debe implementar esta función. El controlador registra la función en el serCx2PioTransmitCreate llamada que crea el objeto PIO-transmit.
Si la notificación lista para las transacciones de transmisión de PIO está habilitada, el controlador del controlador serie debe llamar al método SerCx2PioTransmitReady para notificar a SerCx2 cuando el controlador detecta que la transmisión fiFO en el hardware del controlador serie está lista para aceptar más datos. Si la transmisión fiFO está lista para aceptar datos cuando la notificación lista está habilitada, el controlador llama inmediatamente a este método para notificar a SerCx2.
La notificación lista para una transacción pio-transmisión es una notificación única. Después de enviar una notificación lista a SerCx2, el controlador de controlador serie no envía más notificaciones hasta que SerCx2 llama a la función EvtSerCx2PioTransmitEnableReadyNotification para habilitar otra notificación.
Una llamada de función EvtSerCx2PioTransmitWriteBuffer solo puede completar parcialmente una transacción de transmisión de PIO porque no hay más espacio disponible inmediatamente en la transmisión fiFO para escribir más datos. En este caso, SerCx2 llama a la función EvtSerCx2PioTransmitEnableReadyNotification para habilitar una notificación lista, en cuyo caso el controlador del controlador serie debe notificar a SerCx2 cuando la transmisión FIFO tiene espacio para obtener más datos. En respuesta a esta notificación, SerCx2 reanuda la transacción de transmisión completada parcialmente llamando a la función EvtSerCx2PioTransmitWriteBuffer.
Normalmente, una función EvtSerCx2PioTransmitEnableReadyNotification permite una interrupción que se produce cuando la transmisión fiFO en el controlador serie está lista para aceptar más datos. En respuesta a esta interrupción, el controlador del controlador serie llama a SerCx2PioTransmitReady.
No puede haber más de una notificación lista pendiente a la vez. SerCx2 nunca llama a la función EvtSerCx2PioTransmitEnableReadyNotification si la notificación lista ya está habilitada.
SerCx2 nunca llama a la función EvtSerCx2PioTransmitWriteBuffer cuando la notificación lista está habilitada.
Se puede cancelar una notificación lista pendiente si la solicitud de escritura asociada agota el tiempo de espera o se cancela. Para cancelar una notificación lista para una transacción de transmisión de PIO, SerCx2 llama a la función de devolución de llamada de eventos EvtSerCx2PioTransmitCancelReadyNot ification.
Para obtener más información, vea SerCx2 PIO-Transmit Transactions.
Ejemplos
Para definir un EvtSerCx2PioTransmitEnableReadyNotification 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 EvtSerCx2PioTransmitEnableReadyNotification función de devolución de llamada denominada MyPioTransmitEnableReadyNotification
, use el tipo de función EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION, como se muestra en este ejemplo de código:
EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION MyPioTransmitEnableReadyNotification;
A continuación, implemente la función de devolución de llamada de la siguiente manera:
_Use_decl_annotations_
VOID
MyPioTransmitEnableReadyNotification(
SERCX2PIOTRANSMIT PioTransmit
)
{...}
El tipo de función EVT_SERCX2_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION 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_PIO_TRANSMIT_ENABLE_READY_NOTIFICATION 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. |