IOCTL_SERIAL_GET_WAIT_MASK IOCTL (ntddser.h)
Запрос IOCTL_SERIAL_GET_WAIT_MASK возвращает маску ожидания события, которая в настоящее время задана для последовательного контроллера.
Клиент может ожидать событий ожидания, представленных битами флагов, SERIAL_EV_RXCHAR через SERIAL_EV_EVENT2. Дополнительные сведения об этих флагах событий см. в разделе "Примечания".
Чтобы задать маску ожидания события, клиент может использовать запрос IOCTL_SERIAL_SET_WAIT_MASK. Чтобы дождаться возникновения события ожидания, клиент использует запрос IOCTL_SERIAL_WAIT_ON_MASK.
Основной код
Входной буфер
Никакой.
Длина входного буфера
Никакой.
Выходной буфер
Элемент AssociatedIrp.SystemBuffer указывает на выделенный клиентом буфер ULONG, используемый драйвером последовательного контроллера для вывода маски ожидания. Маска ожидания равно нулю или битовой или одной или нескольким флагам события SERIAL_EV_XXX.
Длина выходного буфера
Элемент Parameters.DeviceIoControl.OutputBufferLength имеет размер в байтах ULONG.
Блок состояния
Если запрос выполнен успешно, элемент Information имеет размер в байтах ULONG. В противном случае элемент сведений равен нулю.
Элемент состояния имеет одно из универсальных значений состояния для запросов последовательного управления устройствами.
Замечания
Константы 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 | См. примечание. | Нет | Нет |
Требования
Требование | Ценность |
---|---|
заголовка | ntddser.h (include Ntddser.h) |