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


IOCTL_SERIAL_SET_WAIT_MASK IOCTL (ntddser.h)

Запрос IOCTL_SERIAL_SET_WAIT_MASK настраивает драйвер последовательного контроллера для уведомления клиента после возникновения любого из указанного набора событий ожидания.

Клиент может ожидать событий ожидания, представленных битами флагов, SERIAL_EV_RXCHAR через SERIAL_EV_EVENT2. Дополнительные сведения об этих флагах событий см. в разделе "Примечания".

Клиент указывает события ожидания, задав маску ожидания входного события на побитовую или одну или несколько флагов событий. Клиент может очистить все события ожидания, задав маску ожидания входного события нулю.

Клиент использует запрос IOCTL_SERIAL_WAIT_ON_MASK для ожидания возникновения события ожидания. Если запрос ожидания по маске уже ожидается при обработке запроса set-wait-mask, ожидающий запрос на событие ожидания завершается с состоянием STATUS_SUCCESS, а для маски события ожидания выходных данных задано нулевое значение.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Элемент AssociatedIrp.SystemBuffer указывает на буфер ULONG, который клиент выделяет и задает маску ожидания события. Маска ожидания имеет значение нулю или битовое значение ИЛИ одного или нескольких битов SERIAL_EV_XXX флагов.

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

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

Выходной буфер

Никакой.

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

Никакой.

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

Элемент Information имеет значение нулю.

Элемент состояния имеет одно из универсальных значений состояния для запросов последовательного управления устройствами. Состояние 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, чтобы ждать события в текущей маске ожидания. Драйвер последовательного контроллера завершает этот запрос при возникновении события в маске ожидания.

В следующей таблице показано, какие биты флагов XXX SERIAL_EV_ поддерживаются SerCx2, SerCx и Serial.sys. Запись Да в таблице указывает, что расширение или драйвер последовательной платформы поддерживает соответствующий бит флага. Запись 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см. в обзоре драйверов последовательного контроллера.

Требования

Требование Ценность
заголовка ntddser.h (include Ntddser.h)

См. также

IOCTL_SERIAL_GET_CHARS

IOCTL_SERIAL_GET_WAIT_MASK

IOCTL_SERIAL_SET_CHARS

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_CHARS

SERIAL_STATUS