IOCTL_SERIAL_WAIT_ON_MASK IOCTL (ntddser.h)

IOCTL_SERIAL_WAIT_ON_MASK请求用于等待使用IOCTL_SERIAL_SET_WAIT_MASK请求指定的任何等待事件的出现。

发生以下事件之一后,将完成等待掩码请求:

  • 发生由最新的 set-wait-mask 请求指定的等待事件。
  • 在等待掩码请求挂起时收到 IOCTL_SERIAL_SET_WAIT_MASK 请求。 驱动程序完成挂起的等待掩码请求,状态为 STATUS_SUCCESS 并且输出等待掩码设置为零。
客户端可以等待通过 SERIAL_EV_EVENT2 SERIAL_EV_RXCHAR 标志位表示 等待事件。 有关这些事件标志的详细信息,请参阅 SERIAL_EV_XXX

客户端发送一个 IOCTL_SERIAL_WAIT_ON_MASK 请求,以等待最新 IOCTL_SERIAL_SET_WAIT_MASK 请求提供的等待掩码中指定的事件的发生。 如果当前等待掩码中的一个或多个事件在发送 IOCTL_SERIAL_WAIT_ON_MASK 请求之前发生,则此请求将立即完成,状态为 STATUS_SUCCESS,输出掩码值用于标识事件。 如果在发送 IOCTL_SERIAL_WAIT_ON_MASK 请求之前,等待掩码中没有发生任何事件,则此请求将被标记为挂起,并在串行控制器队列中等待当前等待掩码中下一个事件发生。

在客户端 的IOCTL_SERIAL_WAIT_ON_MASK 请求完成状态为STATUS_SUCCESS和非零输出掩码值后,客户端可以发送新的 IOCTL_SERIAL_WAIT_ON_MASK 请求以等待当前等待掩码中的另一个事件。 只有在上一个 IOCTL_SERIAL_WAIT_ON_MASK 请求完成之后发生的新事件才会导致新 IOCTL_SERIAL_WAIT_ON_MASK 请求完成,状态为 STATUS_SUCCESS 和非零输出掩码值。

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

无。

输入缓冲区长度

无。

输出缓冲区

AssociatedIrp.System 缓冲区指向保存事件等待掩码的 ULONG 缓冲区。 事件等待掩码指示发生了哪些等待事件。 事件等待掩码设置为零或一个或多个 SERIAL_EV_XXX 标志位的按位或。

输出缓冲区长度

Parameters.DeviceIoControl.OutputBufferLength 成员设置为 ULONG 的大小(以字节为单位)。

状态块

信息成员设置为 ULONG 的大小(以字节为单位)。

状态成员设置为串行设备控制请求的泛型状态值之一。 STATUS_INVALID_PARAMETER状态表示未设置等待事件,或者掩码等待请求已挂起。

要求

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

另请参阅

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX