IOCTL_SERIAL_WAIT_ON_MASK 请求用于等待使用 IOCTL_SERIAL_SET_WAIT_MASK 请求指定的任何等待事件的发生。
发生以下事件之一后,将完成等待掩码请求:
- 发生由最新 set-wait-mask 请求指定的等待事件。
- 等待掩码请求挂起时收到 IOCTL_SERIAL_SET_WAIT_MASK 请求。 驱动程序完成挂起的等待掩码请求,状态为STATUS_SUCCESS,输出等待掩码设置为零。
客户端发送 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和非零输出掩码值。
主要代码
输入缓冲区
没有。
输入缓冲区长度
没有。
输出缓冲区
AssociatedIrp.System 缓冲区指向保存事件等待掩码的 ULONG 缓冲区。 事件等待掩码指示发生了哪些等待事件。 事件等待掩码设置为零或设置为一个或多个 SERIAL_EV_XXX 标志位的按位 OR。
输出缓冲区长度
Parameters.DeviceIoControl.OutputBufferLength 成员设置为 ULONG 的大小(以字节为单位)。
状态块
信息 成员设置为 ULONG 的大小(以字节为单位)。
状态 成员设置为串行设备控制请求 泛型状态值之一。 STATUS_INVALID_PARAMETER的状态指示未设置等待事件,或者等待掩码请求已挂起。
要求
要求 | 价值 |
---|---|
标头 | ntddser.h (包括 Ntddser.h) |