IOCTL_SERIAL_SET_WAIT_MASK IOCTL (ntddser.h)
IOCTL_SERIAL_SET_WAIT_MASK请求将串行控制器驱动程序配置为在发生任何一组指定的等待事件后通知客户端。
客户端可以等待通过 SERIAL_EV_EVENT2 SERIAL_EV_RXCHAR 标志位表示 的等待事件。 有关这些事件标志的详细信息,请参阅备注部分。
客户端通过将输入事件等待掩码设置为一个或多个事件标志的按位 OR 来指定等待事件。 客户端可以通过将输入事件等待掩码设置为零来清除所有等待事件。
客户端使用 IOCTL_SERIAL_WAIT_ON_MASK 请求来等待等待事件的出现。 如果在处理 set-wait-mask 请求时已挂起等待掩码请求,则挂起的事件等待请求的状态为STATUS_SUCCESS并且输出等待事件掩码设置为零。
主要代码
输入缓冲区
AssociatedIrp.SystemBuffer 成员指向客户端分配并设置为事件等待掩码的 ULONG 缓冲区。 等待掩码设置为零或一个或多个 SERIAL_EV_XXX 标志位的按位 OR。
输入缓冲区长度
Parameters.DeviceIoControl.InputBufferLength 成员设置为 ULONG 的大小(以字节为单位)。
输出缓冲区
无。
输出缓冲区长度
无。
状态块
信息成员设置为零。
状态成员设置为串行设备控制请求的泛型状态值之一。 状态为 STATUS_INVALID_PARAMETER 指示输入等待掩码无效。
注解
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 标志位。 表中的 “是 ”条目指示串行框架扩展或驱动程序支持相应的标志位。 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) |