Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Я на #1. 27.09.03 18:40 Число просмотров: 2241
Автор: Tlo Статус: Незарегистрированный пользователь
|
Если посмотреть на реализацию драйвера serial.sys (8250 family of UARTS) в nt4ddk, то мы увидим, что на запрос о своих пропертях он вернет:
MaxBaud = SERIAL_BAUD_USER; // Просто. Без вариантов.
А для dwSettableBaud :
SettableBaud = SERIAL_BAUD_USER | X; // Тоесть BAUD_USER установлен всегда :)
Где X будет комбинацией SERIAL_BAUD_xxx для скоростей, для которых можно найти делитель частоты установленного UART.
Далее. При запросе на установку скорости порта драйвер берет параметр - скорость и опять проверяет - можно ли найти подходящий делитель частоты. Если да - то устанавливает, ели нет - то вываливает ошибку (к счастью не BSoD :).
Другими словами, получается, что наличие SERIAL_BAUD_USER дает возможность (пробывыать) устанавливать скорости, не ограниченные только конкретными SERIAL_BAUD_xxx, а любые.
Добавлю, что константы SERIAL_BAUD_xxx и BAUD_xxx соответствуют др. другу. А также, то, что известные мне (хоть таких и мало) PСI карточки с портами подставляют свои драйвера под serial.sys, то есть вышеизложенное касается их полностью.
Второй же вариант представляется вовсе сомнительным - если в SettableBaud установлены хотя бы 2 бита (кроме BAUD_USER), это уже означает, что скорость порта может устанавливаться, а не фиксирована, поэтому вводить для этого дополнительный флаг (BAUD_USER) непомикрософтовски необычно.
Однако никаких конкретных толкований в ddk этого флага (помимо того, что обозначено в msdn) не дается. Это означает, что какой-нить горячий студент (без понятий о микрософтовском стиле) вполне мог бы толковать его как #2.
Have fun.
|
|
|