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 |