IOCTL_SERIAL_INTERNAL_BASIC_SETTINGS control code
The IOCTL_SERIAL_INTERNAL_BASIC_SETTINGS request sets a serial device to a basic operating mode. Serial's basic operating mode reads and writes one byte at a time, and does not use handshake flow control or time-outs. The basic operation mode is suitable for use by a driver that uses a subset of the 16550 UART interface. Examples of such drivers include a mouse driver or a graphics pad driver for older hardware that use a 16450 UART.
The IOCTL_SERIAL_INTERNAL_BASIC_SETTINGS request returns the operating mode settings that are in use just before Serial sets the basic operation mode. A client uses an IOCTL_SERIAL_INTERNAL_RESTORE_SETTINGS request to restore a previous operating mode. A client should treat the operating mode settings as opaque. Serial does not verify the settings when the settings are restored. Note also that a replacement driver for Serial might implement a different set of basic settings.
The Parameters.DeviceIoControl.OutputBufferLength is set to the size, in bytes, of a SERIAL_BASIC_SETTINGS structure.
The AssociatedIrp.SystemBuffer points to a client-allocated SERIAL_BASIC_SETTINGS structure that Serial uses to output the current configuration.
If the request is successful, the Information member is set to the size, in bytes, of SERIAL_BASIC_SETTINGS. Otherwise, the Information member is set to zero.
The Status member is set to one of the Generic Status Values for Serial Device Control Requests. If Status is set to STATUS_BUFFER_TOO_SMALL, the value of Parameters.DeviceIoControl.OutputLength is less than the size, in bytes, of a SERIAL_BASIC_SETTINGS structure.