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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Не дать системе загрузить драйвер  (Прочитано 7811 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dimm
Гость
« : 13-07-2007 13:43 » 

Имеется внешнее устройство с микроконтроллером, подключаемое на COM-порт, этот контроллер постоянно передает телеметрию в PC (по своему протоколу), программа под Windows считывает эти данные и работает с ними. Причем данные сыпятся в порт и тогда, когда программа не запущена.
Бывают ситуации когда комп зависает или пропадает питание, после перезагрузки Windows находит на этом COM-порту какое-то устройство и идентифицирует его почему-то как Microsoft Trackball mouse (видимо в этом потоке данных узнает что-то "родное" от трекбола), драйвера ставятся sermouse.sys и mouclass.sys.
В "Диспетчере устройств" этот трекбол естественно с восклицательным знаком, но самое главное порт-то занят!
И прога для работы с данными сообщает о занятости порта и работать не может!
Приходится отключать кабель от COM-порта и перегружать комп.
Пробовал отключать этот трекбол - не помогает - порт всё равно занят.

Можно ли как-то запретить Windows при загрузке опрашивать этот порт?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 14-07-2007 06:59 » 

dimm, может поменять протокол ?
У меня проект с точно такими же условиями - девайс постоянно валит кучу данных на порт, независимо от того, включен комп или нет. Только отличие такое - программа всегда отвечает, приняла ли она очередную посылку. Если прибор не видит ответа, то он хранит данные в своём буфере, а неудачно посланное сообщение пытается передать до победного. Как только программа стала отвечать, прибор передаёт всё из буфера
Записан

dimm
Гость
« Ответ #2 : 14-07-2007 12:07 » 

Да вот проблема - железка и программа для неё не моя. У разработчиков вроде всё ок. А у меня еще на этой же системе другие железки крутятся (типа платы с DSP), может всё это совместно как-то влияет.
Вот и думаю как системе не дать опрашивать конкретный порт.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 14-07-2007 12:17 » 

хм... по ком-порту вроде PNP особо автоматом не сделаешь, значит сидит иде то в системе перечислитель и пытается опознать девайс. думаю надо етот перечислитель найти и обезвредить)
 можно поподробнее? что за версия винды,  inf файл этого трекбола (у себя в XP не нашел)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 14-07-2007 12:21 » 

хотя inf вроде в ddk есть... смотрю...
PS
мысль... такая. а можно *.inf от этого девайса взглянуть?
может быть попробовать с загрузкой поиграть?
StartType = в inf-е заменить на:
SERVICE_AUTO_START  /SERVICE_BOOT_START/SERVICE_DEMAND_START/SERVICE_SYSTEM_START и т.д.?

0x0 (SERVICE_BOOT_START)
Indicates a driver started by the operating system loader.
This value must be used for drivers of devices required for loading the operating system.

0x1 (SERVICE_SYSTEM_START)
Indicates a driver started during operating system initialization.
This value should be used by PnP drivers that do device detection during initialization but are not required to load the system.

For example, a PnP driver that also can detect a legacy device should specify this value in its INF so that its DriverEntry routine will be called to find the legacy device, even if that device cannot be enumerated by the PnP manager.

0x2 (SERVICE_AUTO_START)
Indicates a driver started by the service control manager during system startup.
This value should never be used in the INF files for WDM or PnP device drivers.

0x3 (SERVICE_DEMAND_START)
Indicates a driver started on demand, either by the PnP manager when the corresponding device is enumerated or possibly by the service control manager in response to an explicit user demand for a non-PnP device.
This value should be used in the INF files for all WDM drivers of devices that are not required to load the system and for all PnP device drivers that are neither required to load the system nor engaged in device detection.

0x4 (SERVICE_DISABLED)
Indicates a driver that cannot be started.
This value can be used to temporarily disable the driver services for a device, but a device/driver cannot be installed if this value is specified in the service-install section of its INF file.

« Последнее редактирование: 14-07-2007 12:28 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
dimm
Гость
« Ответ #5 : 15-07-2007 03:14 » 

У себя на рабочей машине тоже не нашел.
А та, проблемная, машина пока далеко от меня (географически), через неделю поеду - буду экспериментировать. Но стоит там обычная WinXP Pro SP2 Rus - сам ставил.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines