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并且输出等待事件掩码设置为零。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

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_MASKIOCTL_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 查看注释。
 
注意 SerCx2 可能支持也可能不支持所指示的表条目中的标志位,具体取决于串行控制器驱动程序和串行控制器硬件的功能。
 
有关 SerCx2、SerCx 和 Serial.sys 的详细信息,请参阅 串行控制器驱动程序概述

要求

要求
Header ntddser.h (包括 Ntddser.h)

另请参阅

IOCTL_SERIAL_GET_CHARS

IOCTL_SERIAL_GET_WAIT_MASK

IOCTL_SERIAL_SET_CHARS

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_CHARS

SERIAL_STATUS