SERIAL_COMMPROP结构 (ntddser.h)

SERIAL_COMMPROP 结构指定串行端口的属性。

语法

typedef struct _SERIAL_COMMPROP {
  USHORT PacketLength;
  USHORT PacketVersion;
  ULONG  ServiceMask;
  ULONG  Reserved1;
  ULONG  MaxTxQueue;
  ULONG  MaxRxQueue;
  ULONG  MaxBaud;
  ULONG  ProvSubType;
  ULONG  ProvCapabilities;
  ULONG  SettableParams;
  ULONG  SettableBaud;
  USHORT SettableData;
  USHORT SettableStopParity;
  ULONG  CurrentTxQueue;
  ULONG  CurrentRxQueue;
  ULONG  ProvSpec1;
  ULONG  ProvSpec2;
  WCHAR  ProvChar[1];
} SERIAL_COMMPROP, *PSERIAL_COMMPROP;

成员

PacketLength

以此结构开头且包含所请求属性数据的数据包的大小(以字节为单位)。 此大小包括 SERIAL_COMMPROP 结构和此结构后面的任何其他 ProvChar 数组元素。

PacketVersion

此结构的版本。 当前版本号为 2。

ServiceMask

一个位掩码,指示此通信提供程序实现哪些服务。 此成员始终设置为由串行通信提供商(包括调制解调器提供商)SERIAL_SP_SERIALCOMM。 ProvSubType 成员指示 (实现的特定类型的串行通信,例如调制解调器) 。

Reserved1

未使用。

MaxTxQueue

最大传输队列大小。 串行控制器驱动程序的内部输出缓冲区的最大大小(以字节为单位)。 值为零表示串行提供程序未施加任何最大值。

MaxRxQueue

最大接收队列大小。 串行控制器驱动程序的内部输入缓冲区的最大大小(以字节为单位)。 值为零表示串行提供程序未施加任何最大值。

MaxBaud

可接受的最大波特率。 基于扩展的串行控制器驱动程序将此成员设置为以比特/秒 (bps) 表示的波特率。 例如,如果串行控制器支持的最大波特率为 115,200 bps,则驱动程序会将 MaxBaud 设置为 115200。

但是,Serial.sys 和许多较旧的串行控制器驱动程序将 MaxBaud 设置为 Ntddser.h 头文件中定义的 SERIAL_BAUD_XXX 标志位之一。 为此成员定义了以下值。

说明
SERIAL_BAUD_075 75 bps
SERIAL_BAUD_110 110 bps
SERIAL_BAUD_134_5 134.5 bps
SERIAL_BAUD_150 150 bps
SERIAL_BAUD_300 300 bps
SERIAL_BAUD_600 600 bps
SERIAL_BAUD_1200 1,200 bps
SERIAL_BAUD_1800 1,800 bps
SERIAL_BAUD_2400 2,400 bps
SERIAL_BAUD_4800 4,800 bps
SERIAL_BAUD_7200 7,200 bps
SERIAL_BAUD_9600 9,600 bps
SERIAL_BAUD_14400 14,400 bps
SERIAL_BAUD_19200 19,200 bps
SERIAL_BAUD_38400 38,400 bps
SERIAL_BAUD_56K 56,000 bps
SERIAL_BAUD_57600 57,600 bps
SERIAL_BAUD_115200 115,200 bps
SERIAL_BAUD_128K 128,000 bps
SERIAL_BAUD_USER 提供可编程波特率。

ProvSubType

特定的通信提供程序类型。 当 ServiceMask 成员设置为 SERIAL_SP_SERIALCOMM 时, ProvSubType 设置为以下值之一。

含义
SERIAL_SP_UNSPECIFIED 未指定
SERIAL_SP_RS232 RS-232 串行端口
SERIAL_SP_PARALLEL 并行端口
SERIAL_SP_RS422 RS-422 串行端口
SERIAL_SP_RS423 RS-423 串行端口
SERIAL_SP_RS449 RS-449 串行端口
SERIAL_SP_MODEM 调制解调器设备
SERIAL_SP_FAX FAX 设备
SERIAL_SP_SCANNER 扫描仪设备
SERIAL_SP_BRIDGE 未指定的网桥
SERIAL_SP_LAT LAT 协议
SERIAL_SP_TELNET TCP/IP Telnet® 协议
SERIAL_SP_X25 X.25 标准

ProvCapabilities

提供程序提供的功能。 此成员设置为零或设置为以下一个或多个标志位的按位 OR。

说明
SERIAL_PCF_DTRDSR 支持 DTR (数据终端就绪) 和 DSR (数据集就绪) 。
SERIAL_PCF_RTSCTS 支持发送) 的 RTS (请求和 CTS (明确发送) 。
SERIAL_PCF_CD 支持 CD (运营商检测) 。
SERIAL_PCF_PARITY_CHECK 支持奇偶校验检查。
SERIAL_PCF_XONXOFF 支持) 上的 XON (传输和 XOFF (传输) 流控制。
SERIAL_PCF_SETXCHAR 可设置 XON 和 XOFF 字符。
SERIAL_PCF_TOTALTIMEOUTS 支持总已用时间超时。
SERIAL_PCF_INTTIMEOUTS 支持间隔超时。
SERIAL_PCF_SPECIALCHARS 支持特殊字符。
SERIAL_PCF_16BITMODE 支持特殊的 16 位模式。

SettableParams

一个位掩码,指示可以更改的通信参数。 此成员设置为零或设置为以下一个或多个标志位的按位 OR。

说明
SERIAL_SP_PARITY 奇偶校验类型 (偶数或奇数)
SERIAL_SP_BAUD 波特率
SERIAL_SP_DATABITS 数据位
SERIAL_SP_STOPBITS 停止位
SERIAL_SP_HANDSHAKING 握手 (流控制)
SERIAL_SP_PARITY_CHECK 奇偶校验检查
SERIAL_SP_CARRIER_DETECT 运营商检测

SettableBaud

指示可以使用的波特率的位掩码。 有关描述为此成员定义的 SERIAL_BAUD_XXX 标志位的表,请参阅 MaxBaud 成员的说明。 SettableBaud 设置为零或设置为按位 OR 或其中一个或多个标志位。

串行控制器驱动程序在 SettableBaud 位掩码值中设置SERIAL_BAUD_USER标志位,以指示它们支持的波特率高于其他 SERIAL_BAUD_XXX 标志位表示的波特率。 例如,支持 57600、115200、230400 和 460800 bps 波特率的驱动程序将 SettableBaud = (SERIAL_BAUD_57600 |SERIAL_BAUD_115200 |SERIAL_BAUD_USER) 。

SettableData

可以设置的数据位数。 此成员设置为零或设置为以下一个或多个标志位的按位 OR。

说明
SERIAL_DATABITS_5 5 个数据位
SERIAL_DATABITS_6 6 个数据位
SERIAL_DATABITS_7 7 个数据位
SERIAL_DATABITS_8 8 数据位
SERIAL_DATABITS_16 16 个数据位
SERIAL_DATABITS_16X 通过串行硬件线的特殊宽路径

SettableStopParity

可选择的停止位和奇偶校验设置。 此成员设置为零或设置为以下一个或多个标志位的按位 OR。

说明
SERIAL_STOPBITS_10 一个停止位。
SERIAL_STOPBITS_15 一个半停止位。
SERIAL_STOPBITS_20 两个停止位。
SERIAL_PARITY_NONE 不使用奇偶校验位。
SERIAL_PARITY_ODD 奇数奇偶校验。 如果字符值中的 1 数为偶数,则奇偶校验位为 1。 否则,奇偶校验位为 0。
SERIAL_PARITY_EVEN 甚至奇偶校验。 如果字符值中的 1 个数为奇数,则奇偶校验位为 1。 否则,奇偶校验位为 0。
SERIAL_PARITY_MARK 奇偶校验位始终设置为 1。
SERIAL_PARITY_SPACE 奇偶校验位始终设置为 0。

CurrentTxQueue

传输队列大小。 此成员指定串行控制器驱动程序的内部输出缓冲区的大小(以字节为单位)。 值为零表示缓冲区大小不可用。

对于 SerCx2 和 SerCx,关联的串行控制器驱动程序通常将此成员设置为零。 Serial.sys 将此成员设置为指示输出缓冲区大小的非零值。

CurrentRxQueue

接收队列大小。 此成员指定串行控制器驱动程序的内部输入缓冲区的大小(以字节为单位)。 值为零表示缓冲区大小不可用。

对于 SerCx2 和 SerCx,此成员由关联的串行控制器驱动程序设置。 对于 SerCx2,驱动程序通常将此成员设置为零。 对于 SerCx,驱动程序通常将此成员设置为 SerCx 用于缓冲接收的数据的环形缓冲区的大小。 此驱动程序可以调用 SerCxGetRingBufferUtilization 方法从 SerCx 获取环形缓冲区大小。

Serial.sys 将此成员设置为指示输入缓冲区大小的非零值。

ProvSpec1

提供程序特定的数据。 应用程序应忽略此成员,除非有关串行端口所需数据格式的提供程序特定数据可用。

ProvSpec2

提供程序特定的数据。 应用程序应忽略此成员,除非有关串行端口所需数据格式的提供程序特定数据可用。

ProvChar[1]

提供程序特定的数据。 应用程序应忽略此成员,除非有关串行端口所需数据格式的提供程序特定数据可用。 此成员是一个或多个元素的宽字符数组中的第一个元素。 任何其他元素紧跟此成员。 PacketLength 成员指定SERIAL_COMMPROP结构的大小以及遵循此结构的任何其他 ProvChar 数组元素。

注解

此结构由 IOCTL_SERIAL_GET_PROPERTIES 请求使用。

要求

要求
Header ntddser.h

另请参阅

IOCTL_SERIAL_GET_PROPERTIES