Interfaz de solicitud de E/S serie
Para controlar un dispositivo periférico conectado a un puerto en un controlador serie, una aplicación cliente o un controlador de dispositivo periférico envía solicitudes de E/S al puerto. Un cliente usa IRP_MJ_WRITE y IRP_MJ_READ solicitudes para transmitir datos a un puerto serie y recibirlos. Además, Windows define un conjunto de solicitudes de control de E/S serie (IOCTLs) que un cliente puede usar para configurar un puerto serie.
Las solicitudes IRP_MJ_XXX serie y las ICTL serie forman una interfaz de solicitud de E/S serie que se admite en una gama de dispositivos de controladora serie. Esta interfaz es compatible con el controlador Serial.sys y por la combinación de SerCx2 o SerCx y un controlador de controlador serie basado en extensiones.
SerCx2, SerCx y Serial.sys admiten muchos de los mismos IOCTLs serie. Sin embargo, SerCx2, SerCx y Serial.sys admiten subconjuntos diferentes de las ICTLs especificadas en solicitudes de control de dispositivos serie. En la tabla siguiente se resumen los subconjuntos de IOCTLs que son compatibles con SerCx2, SerCx y Serial.sys. Una entrada Sí en la tabla indica que la extensión o controlador del marco de trabajo serie admite el IOCTL correspondiente y una entrada No indica que no.
IOCTL serie | SerCx2 | SerCx | Serial.sys |
---|---|---|---|
Sí |
Sí |
No |
|
No |
Sí |
Sí |
|
Vea la nota 1. |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
No |
No |
Sí |
|
Sí |
Sí |
Sí |
|
Vea la nota 2. |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
Vea la nota 1. |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
IOCTL_SERIAL_GET_MODEM_CONTROL (véase la nota 4). |
Sí |
Sí |
Sí |
No |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
No |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
No |
Sí |
Sí |
|
No |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
IOCTL_SERIAL_RESET_DEVICE (véase la nota 5). |
No |
No |
Sí |
Sí |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
Vea la nota 2. |
Sí |
Sí |
|
Vea la nota 1. |
Sí |
Sí |
|
Vea la nota 1. |
Sí |
Sí |
|
IOCTL_SERIAL_SET_HANDFLOW (véase la nota 3). |
Sí |
Sí |
Sí |
Sí |
Sí |
Sí |
|
IOCTL_SERIAL_SET_MODEM_CONTROL (véase la nota 4). |
Sí |
Sí |
Sí |
Sí |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
No |
Sí |
Sí |
|
No |
Sí |
Sí |
|
Sí |
Sí |
Sí |
|
No |
Sí |
Sí |
SerCx2 puede admitir o no este IOCTL en función de la implementación del controlador de serie y de las funcionalidades del hardware del controlador serie.
SerCx2 no admite caracteres especiales. SerCx2 siempre completa una solicitud de IOCTL_SERIAL_SET_CHARS con un código de estado STATUS_SUCCESS, pero no establece ningún carácter especial ni realiza ninguna otra operación en respuesta a esta solicitud. Para una solicitud de IOCTL_SERIAL_GET_CHARS , SerCx2 establece todos los valores de caracteres de la estructura SERIAL_CHARS en NULL y completa la solicitud con un código de estado de STATUS_SUCCESS.
SerCx2 y SerCx solo admiten subconjuntos de las marcas definidas para los miembros FlowReplace y ControlHandShake de la estructura SERIAL_HANDFLOW . Serial.sys admite todas estas marcas. Para obtener más información, consulte SERIAL_HANDFLOW.
Las solicitudes IOCTL_SERIAL_GET_MODEM_CONTROL y IOCTL_SERIAL_SET_MODEM_CONTROL se usan principalmente para las pruebas de hardware. No se define ningún diseño de registro estándar para las operaciones de control del módem. Los controladores periféricos que usan ICTL de control de módem se arriesgan a depender de las características de hardware de un controlador serie determinado.
El controlador Serial.sys siempre completa una solicitud de IOCTL_SERIAL_RESET_DEVICE con STATUS_SUCCESS, pero no realiza ninguna operación en respuesta a esta solicitud. SerCx2 y SerCx no admiten solicitudes de IOCTL_SERIAL_RESET_DEVICE y siempre completan estas solicitudes con STATUS_NOT_IMPLEMENTED.
Para obtener más información sobre las solicitudes IOCTL_SERIAL_XXX y las solicitudes de lectura y escritura para controladores serie, vea el encabezado ntddser.h .