IOCTL_SERIAL_GET_WAIT_MASK IOCTL (ntddser.h)
IOCTL_SERIAL_GET_WAIT_MASK请求返回当前为串行控制器设置的事件等待掩码。
客户端可以等待通过SERIAL_EV_EVENT2 SERIAL_EV_RXCHAR 标志位表示 的等待事件。 有关这些事件标志的详细信息,请参阅“备注”部分。
若要设置事件等待掩码,客户端可以使用 IOCTL_SERIAL_SET_WAIT_MASK 请求。 为了等待等待事件的发生,客户端使用 IOCTL_SERIAL_WAIT_ON_MASK 请求。
主要代码
输入缓冲区
无。
输入缓冲区长度
无。
输出缓冲区
AssociatedIrp.SystemBuffer 成员指向客户端分配的 ULONG 缓冲区,串行控制器驱动程序使用该缓冲区输出等待掩码。 等待掩码为零或一个或多个 SERIAL_EV_XXX 事件标志的按位 OR。
输出缓冲区长度
Parameters.DeviceIoControl.OutputBufferLength 成员设置为 ULONG 的大小(以字节为单位)。
状态块
如果请求成功, 则信息 成员将设置为 ULONG 的大小(以字节为单位)。 否则, 信息 成员设置为零。
Status 成员设置为串行设备控制请求的一般状态值之一。
注解
SERIAL_EV_XXX 常量定义串行端口的等待掩码中的标志位。
#define SERIAL_EV_RXCHAR 0x0001 #define SERIAL_EV_RXFLAG 0x0002 #define SERIAL_EV_TXEMPTY 0x0004 #define SERIAL_EV_CTS 0x0008 #define SERIAL_EV_DSR 0x0010 #define SERIAL_EV_RLSD 0x0020 #define SERIAL_EV_BREAK 0x0040 #define SERIAL_EV_ERR 0x0080 #define SERIAL_EV_RING 0x0100 #define SERIAL_EV_PERR 0x0200 #define SERIAL_EV_RX80FULL 0x0400 #define SERIAL_EV_EVENT1 0x0800 #define SERIAL_EV_EVENT2 0x1000
SERIAL_EV_XXX 常量定义可在等待掩码中指定的事件类型。 在客户端 (应用程序或外围驱动程序) 打开与串行端口的连接后,客户端可以指定一个等待掩码来指示客户端需要监视的事件类型。 这些事件是串行端口的硬件状态的更改。 当等待掩码中发生事件时,客户端会收到通知。
IOCTL_SERIAL_SET_WAIT_MASK和IOCTL_SERIAL_GET_WAIT_MASK控制请求使用事件等待掩码来指定客户端可以等待的一组事件。 等待掩码值为零或一个或多个 SERIAL_EV_XXX 常量的按位 OR。 等待掩码值为零表示客户端未等待任何事件。
客户端发送 IOCTL_SERIAL_WAIT_ON_MASK 控制请求以等待当前设置的等待掩码中的事件。 当等待掩码中的事件发生时,串行控制器驱动程序完成此请求。
下表显示了 SerCx2、SerCx 和 Serial.sys 支持哪些 SERIAL_EV_XXX 标志位。 表中的 “是 ”条目指示串行框架扩展或驱动程序支持相应的标志位。 No 条目表示不支持标志位。
标志位 | SerCx2 | SerCx | Serial.sys |
---|---|---|---|
SERIAL_EV_RXCHAR | 是 | 是 | 是 |
SERIAL_EV_RXFLAG | 查看注释。 | 否 | 是 |
SERIAL_EV_TXEMPTY | 是 | 是 | 是 |
SERIAL_EV_CTS | 是 | 是 | 是 |
SERIAL_EV_DSR | 是 | 是 | 是 |
SERIAL_EV_RLSD | 查看注释。 | 是 | 是 |
SERIAL_EV_BREAK | 是 | 是 | 是 |
SERIAL_EV_ERR | 是 | 是 | 是 |
SERIAL_EV_RING | 查看注释。 | 是 | 是 |
SERIAL_EV_PERR | 查看注释。 | 否 | 否 |
SERIAL_EV_RX80FULL | 查看注释。 | 否 | 是 |
SERIAL_EV_EVENT1 | 查看注释。 | 否 | 否 |
SERIAL_EV_EVENT2 | 查看注释。 | 否 | 否 |
要求
要求 | 值 |
---|---|
Header | ntddser.h (包括 Ntddser.h) |