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 事件标志。
输出缓冲区长度
Parameters.DeviceIoControl.OutputBufferLength 成员设置为 ULONG 的大小(以字节为单位)。
状态块
如果请求成功,则 信息 成员设置为 ULONG 的大小(以字节为单位)。 否则,信息 成员设置为零。
言论
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 常量。 等待掩码值为零表示客户端未等待任何事件。
客户端发送 IOCTL_SERIAL_WAIT_ON_MASK 控制请求来等待当前设置的等待掩码中的事件。 当发生等待掩码中的事件时,串行控制器驱动程序将完成此请求。
下表显示了 SerCx2、SerCx 和 Serial.sys支持哪些 SERIAL_EV_XXX 标志位。 表中 是 项表示串行框架扩展或驱动程序支持相应的标志位。 “无”条目表示标志位 不受 支持。
| 标志位 | 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 | 请参阅注释。 | 不 | 不 |
要求
| 要求 | 价值 |
|---|---|
| 标头 | ntddser.h (包括 Ntddser.h) |