информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыЗа кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[win32] точный смысл значения baud_user для элементов commprop 26.09.03 20:12  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
В Win32 API существует структура COMMPROP, описывающая возможности COM-порта. Для её полей dwMaxBaud и dwSettableBaud определены битовы маски BAUD_075..BAUD_115200..BAUD_USER.

Значение BAUD_USER определено как "Programmable baud rates available".
Существует как минимум два мнения относительно трактовки этой фразы:
1) Если бит BAUD_USER установлен, то значить COM-порт позволяет устанавливать не только уже определенные скорости (2400, 9600, и т.д.), но и нестандартные скорости (например 48000 или 64000).
2) Установка бита BAUD_USER означает что скорость порта в принципе может меняться, т.е. не фиксирована аппаратно.

Прошу компетентно высказаться, что есть правильно.
Я придерживаюсь первого варианта, что вызывает проблемы у софта, авторы которого считают правильным второй вариант.
[Win32] Я на #1. 27.09.03 18:40  
Автор: 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.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach