Поделиться через


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 а для выходной маски ожидания задано значение 0.
Клиент может ждать событий ожидания, представленных битами флагов , SERIAL_EV_RXCHARчерез SERIAL_EV_EVENT2. Дополнительные сведения об этих флагах событий см. в разделе 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 buffer указывает на буфер ULONG, содержащий маску ожидания событий. Маска ожидания событий указывает, какие события ожидания произошли. Для маски ожидания событий задано значение ноль или побитовое ИЛИ одного или нескольких битов флага SERIAL_EV_XXX .

Длина выходного буфера

Член Parameters.DeviceIoControl.OutputBufferLength имеет размер ULONG в байтах.

Блок состояния

Для элемента Information устанавливается размер ULONG в байтах.

Для элемента Status задано одно из универсальных значений состояния для запросов управления последовательным устройством. Состояние STATUS_INVALID_PARAMETER указывает, что события ожидания не заданы или запрос ожидания при маске уже находится в ожидании.

Требования

Требование Значение
Заголовок ntddser.h (включая Ntddser.h)

См. также раздел

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX