SERIAL_HANDFLOW structure (ntddser.h)

The SERIAL_HANDFLOW structure specifies the handshake and flow control settings for a serial port.

Syntax

typedef struct _SERIAL_HANDFLOW {
  ULONG ControlHandShake;
  ULONG FlowReplace;
  LONG  XonLimit;
  LONG  XoffLimit;
} SERIAL_HANDFLOW, *PSERIAL_HANDFLOW;

Members

ControlHandShake

A bitmask that specifies the control lines that the serial port uses for flow control. This member is set to zero or to the bitwise-OR or one or more of the following flags.

Value Description
SERIAL_DTR_CONTROL DTR (data terminal ready) is enabled.
SERIAL_DTR_HANDSHAKE DTR is used for input flow control.
SERIAL_CTS_HANDSHAKE CTS (clear to send) is used for output flow control.
SERIAL_DSR_HANDSHAKE DSR (data set ready) is used for output flow control.
SERIAL_DCD_HANDSHAKE DCD (data carrier detect) is used for output flow control.
SERIAL_DSR_SENSITIVITY Ignore characters arriving at the serial port when the DSR line is inactive.
SERIAL_ERROR_ABORT Abort a transmit or receive operation if an error occurs.
 

SerCx2 supports the SERIAL_CTS_HANDSHAKE flag, and may or may not support the other six flags defined for this member, depending on the serial controller driver and the capabilities of the serial controller hardware. SerCx supports only the first four flags in the preceding table. Serial.sys supports all of the flags in the preceding table.

FlowReplace

A bitmask that specifies flow control behavior. This member is set to zero or to the bitwise-OR or one or more of the following flags.

Value Description
SERIAL_AUTO_TRANSMIT Use XON/XOFF for flow control of transmitted data.
SERIAL_AUTO_RECEIVE Use XON/XOFF for flow control of received data.
SERIAL_ERROR_CHAR Insert the error character into the received data when an error occurs. For more information, see the description of the ErrorChar member in SERIAL_CHARS.
SERIAL_NULL_STRIPPING Automatically strip null characters from received data.
SERIAL_BREAK_CHAR Insert the break character into the received data when a break occurs. For more information, see the description of the BreakChar member in SERIAL_CHARS.
SERIAL_RTS_CONTROL RTS (request to send) is enabled.
SERIAL_RTS_HANDSHAKE RTS is used for output flow control.
SERIAL_XOFF_CONTINUE Continue to transmit after sending XOFF to the device on the other end of the line.
 

SerCx2 supports the SERIAL_RTS_CONTROL and SERIAL_RTS_HANDSHAKE flags, but typically does not support the other six flags defined for this member, depending on the serial controller driver and the capabilities of the serial controller hardware. SerCx supports only the SERIAL_RTS_CONTROL and SERIAL_RTS_HANDSHAKE flags. Serial.sys supports all of the flags in the preceding table.

XonLimit

XON limit. When the number of characters in the internal receive buffer falls below the XON limit, the serial controller driver uses the flow control signals to tell the sender to resume sending characters.

XoffLimit

XOFF limit. When the number of characters in the internal receive buffer reaches the XOFF limit, the serial controller driver uses the flow control signals to tell the sender to stop sending characters.

Remarks

This structure is used by the IOCTL_SERIAL_GET_HANDFLOW and IOCTL_SERIAL_SET_HANDFLOW requests.

After sending an XOFF (transmit off) character, the serial port stops transmitting immediately, without sending any more characters. This behavior supports serial ports that interpret any character that follows an XOFF as an implied XON (transmit on).

SerCx2 and SerCx support only subsets of the flags that are defined for the ControlHandShake and FlowControl members. An IOCTL_SERIAL_SET_HANDFLOW request that specifies an unsupported flag is completed with STATUS_NOT_IMPLEMENTED.

Requirements

Requirement Value
Header ntddser.h

See also

IOCTL_SERIAL_GET_HANDFLOW

IOCTL_SERIAL_SET_HANDFLOW