Serial Controller Driver Design Guide

You can design a driver or application that uses the serial I/O request interface to communicate with a peripheral device connected to a serial port. A serial port is a hardware communication interface on a serial controller, which is a 16550 UART or compatible device. To control a serial port to which a peripheral device is permanently connected, you can design a custom serial controller driver that works with version 2 of the serial framework extension (SerCx2), which replaces version 1 (SerCx).

In older versions of Windows, a named serial COM port located on the case of a PC, the inbox Serial.sys and Serenum.sys drivers were used.

Note

This topic describes programming traditional COM ports. For information on USB attached serial ports, see USB serial driver (Usbser.sys).

SerCx2

You can write a serial controller driver that works together with version 2 of the serial framework extension (SerCx2) to manage a serial controller. You can also write a peripheral driver for a peripheral device that is connected to a port on a serial controller that is jointly managed by SerCx2 and a serial controller driver. This peripheral driver uses the serial I/O request interface to transfer data to and from the device. An extension-based serial controller driver handles all hardware-specific tasks for the serial controller, but uses SerCx2 to perform many system tasks that are common to all serial controllers. SerCx2 is a system-supplied component starting with Windows 8.1.

SerCx2 relieves the serial controller driver of the processing work required to manage time-outs, and to coordinate I/O transactions that compete for access to the serial controller. As a result, the serial controller driver is smaller and simpler. The hardware vendor for the serial controller supplies an extension-based serial controller driver that manages the hardware-specific functions in the serial controller, and that relies on SerCx2 to perform generic serial-controller tasks. This driver communicates with SerCx2 through the SerCx2 device driver interface.

For more information about SerCx2, see Using Version 2 of the Serial Framework Extension (SerCx2).

In this section