Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Прямой доступ к PCI-девайсу под DOS и W2K: отличия  (Прочитано 4525 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Monsta
Гость
« : 16-03-2005 15:57 » 

Пока я возился с отладкой своего драйвера для PCI-девайса, пришла в голову мысль попробовать прочитать конфигурационные регистры девайса напрямую, так как драйвер местами возвращал вместо содержимого регистров значение 0xFFFFFFFF.

Получилось вот что.
1. Прога под DOS, которая в цикле читает регистр 00h (где хранятся DeviceID и VendorID), сравнивает со значением, которое там должно быть, и в случае ошибки выдаёт сообщение. Ошибка может быть только одна - значение 0xFFFFFFFF.

2. Прога под W2K, которая делает всё то же самое. Естественно, здесь порты шины PCI я читаю не напрямую (винда не даст это сделать), а через библиотеку io.dll (http://www.geekhideout.com/iodll.shtml). Эта DLL делает то же, что и старые драйвера giveio и totalio - открывает прямой доступ к портам из-под винды.

Результат: досовская прога работает нормально, а виндовая иногда выдаёт то самое значение 0xFFFFFFFF.
Я до этого думал, что такое случается из-за ошибки в моём драйвере. Непохоже. Нет ошибки и в девайсе - под DOS-то всё нормально читается.

Объясните пожалуйста, что это может быть.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines