Respect... Отправь в M$ BugReport... Или продай им свой драйвер ;-) Не, лучше _лицензируй_ им его! ;-))))))02.09.05 10:57 Число просмотров: 2223 Автор: HandleX <Александр М.> Статус: The Elderman
Три дня искал ошибку в своем драйвере, теперь вот хочу поделиться "байкой" о том, как конкретная "мышь" на конкретной машине выявляет небольшую логическую ошибку.
Ошибка была обнаружена случайно, проявляется так: подключаем мышь к COM-порту и при загрузке WinXP SP2 либо синий экран, либо мягкий "зависон".
Причинно-следственная цепочка примерно такая:
1) Зависание происходит из-за бесконечного цикла "обхода" устройств в PNP-подсистеме режима ядра. Синий экран в примерно том-же месте, если обращение по "битому" адресу вызывает AV;
2) Код PNP блудит из-за того, что serenum.sys удаляет Child-PDO на своей шине в ненужный момент;
3) serenum.sys рубит то на чем сидит потому, что получает IRP_MN_REMOVE_DEVICE от сидящего сверху sermouse.sys;
4) sermouse.sys содержит грубейшую ошибку в реализации политик PNP, пытаясь самостоятельно удалить devnode-устройство. Видимо код не менялся с бытности NT 4.0;
5) sermouse.sys сходит с ума потому, что видит активность сигнала DSR в момент инициализации "мыши". Это еще одна ошибка в sermoyse.sys;
6) Активность (изменение) DSR доходит до sermouse.sys из моего драйвера через IOCTL_SERIAL_WAIT_ON_MASK;
7) Мой драйвер обнаруживает изменение DSR в статусе COM-порта при смене обработчика прерываний. Новый обработчик содержит код обработки модемных сигналов, а старый нет (в этой ситуации до IOCTL_SERIAL_WAIT_ON_MASK сигналы от модема не были нужны).
8) След изменения DSR остается в регистре статуса модема UART-та с момента работы PNP-протокола поиска устройств подключенных к COM-порту;
9) Сигнал DSR наводится в мышином кабеле, в виде короткого пика при включении DTR;
10) Устранение проблемы сводится к добавлению в мой драйвер двух строчек кода – очистки регистра статуса модема при переключении между режимами ModemStatus-нужен/-не_нужен. Отсутствие этого было небольшой логической ошибкой...
что-то там не все в порядке с мышами02.09.05 12:33 Автор: dl <Dmitry Leonov>
Несколько месяцев назад пробегала ссылка на рассказ одного из инсайдеров, как в мышином драйвере NT/2k/XP нашли плюху, приводящую к синему экрану, которая прожила там лет десять. Просто проявлялась она только при втором или третьем отлупе от устройства, что в реальном мире стало происходить лишь с севшими батарейками на беспроводных мышах.
Помню такое02.09.05 13:17 Автор: amirul <Serge> Статус: The Elderman
Он там пришет про обработчик прерываний, значить это драйвер PS/2 мыши. Все прочие "мышатники" обработчика прерываний не имеют, работают чибо через usb, либо через serial.
Надо будет заслать ему post, может поправят. Вообще, интересный man...
Как в "страшном сне", а как еще-то? Три дня непристойного...31.08.05 10:55 Автор: leo <Леонид Юрьев> Статус: Elderman Отредактировано 31.08.05 11:02 Количество правок: 1
Как в "страшном сне", а как еще-то? Три дня непристойного "секса" с WinDbg, Verifier и WXP SP2 Checked Build...
;-)
Respect... Отправь в M$ BugReport... Или продай им свой драйвер ;-) Не, лучше _лицензируй_ им его! ;-))))))02.09.05 10:57 Автор: HandleX <Александр М.> Статус: The Elderman