Compartir a través de


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 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

IOCTL_SERIAL_APPLY_DEFAULT_CONFIGURATION

No

IOCTL_SERIAL_CLEAR_STATS

No

IOCTL_SERIAL_CLR_DTR

Vea la nota 1.

IOCTL_SERIAL_CLR_RTS

IOCTL_SERIAL_CONFIG_SIZE

No

No

IOCTL_SERIAL_GET_BAUD_RATE

IOCTL_SERIAL_GET_CHARS

Vea la nota 2.

IOCTL_SERIAL_GET_COMMSTATUS

IOCTL_SERIAL_GET_DTRRTS

IOCTL_SERIAL_GET_HANDFLOW

Vea la nota 1.

IOCTL_SERIAL_GET_LINE_CONTROL

IOCTL_SERIAL_GET_MODEM_CONTROL (véase la nota 4).

IOCTL_SERIAL_GET_MODEMSTATUS

No

IOCTL_SERIAL_GET_PROPERTIES

IOCTL_SERIAL_GET_STATS

No

IOCTL_SERIAL_GET_TIMEOUTS

IOCTL_SERIAL_GET_WAIT_MASK

IOCTL_SERIAL_IMMEDIATE_CHAR

No

IOCTL_SERIAL_LSRMST_INSERT

No

IOCTL_SERIAL_PURGE

IOCTL_SERIAL_RESET_DEVICE (véase la nota 5).

No

No

IOCTL_SERIAL_SET_BAUD_RATE

IOCTL_SERIAL_SET_BREAK_OFF

IOCTL_SERIAL_SET_BREAK_ON

IOCTL_SERIAL_SET_CHARS

Vea la nota 2.

IOCTL_SERIAL_SET_DTR

Vea la nota 1.

IOCTL_SERIAL_SET_FIFO_CONTROL

Vea la nota 1.

IOCTL_SERIAL_SET_HANDFLOW (véase la nota 3).

IOCTL_SERIAL_SET_LINE_CONTROL

IOCTL_SERIAL_SET_MODEM_CONTROL (véase la nota 4).

IOCTL_SERIAL_SET_QUEUE_SIZE

IOCTL_SERIAL_SET_RTS

IOCTL_SERIAL_SET_TIMEOUTS

IOCTL_SERIAL_SET_WAIT_MASK

IOCTL_SERIAL_SET_XOFF

No

IOCTL_SERIAL_SET_XON

No

IOCTL_SERIAL_WAIT_ON_MASK

IOCTL_SERIAL_XOFF_COUNTER

No

**Notas**
  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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 .