Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

Драйвер с обработкой прерывания   Найти похожие ветки 

 
o_serg   (2006-12-26 10:59) [0]

Нужно написать простенький драйвер с обработкой одного прерывания и при необходимости передачей сообщения в программу. Подскажите плиз как и чем это лучше сделать. В инете нашел пару примерв vxd и wdm драйверов, но там нет обработчиков прерываний. А может просто написать службу, если в ней можно перехватывать прерывания? Язык большого значения не имеет (АСМ, Си...)


 
Сергей М. ©   (2006-12-26 11:19) [1]

Обслуживание прерываний - привелегия режима ядра.
Делфи не предназначена для разработки драйверов этого режима.


 
oxffff ©   (2006-12-26 11:29) [2]

Compuware Driver Studio.


 
oxffff ©   (2006-12-26 11:39) [3]

>Подскажите плиз как

Зарегистрировать ISR.

Только бывают еще и Shared IRQ.
Может происходить Reassign IRQ(PnP).

В DDK есть хорошие примеры.


 
o_serg   (2006-12-26 13:25) [4]

А из службы сожно обрабатывать прерываие? я нашел пару хороших примеров написания службы на Делфи


 
Сергей М. ©   (2006-12-26 13:28) [5]


> из службы сожно обрабатывать прерываие?


Нельзя.


 
Сергей М. ©   (2006-12-26 13:28) [6]

Зачем тебе вообще понадобилась обработка прерываний ?


 
o_serg   (2006-12-26 13:31) [7]

я сам сделал одно устройство, которое подключается к ком порту, мне нужно обрабатывать прерывание от этого КОМ порта


 
o_serg   (2006-12-26 13:32) [8]

данных оно не передает, только в определенный момент вызывает прерывание и все, поэтому нужно именно перехватить прерывание :)


 
Сергей М. ©   (2006-12-26 13:40) [9]

О каком прерывании от твоего устройства может идти речь, если оно подключено к СОМ-порту, а не к системной шине непосредственно ?


 
Сергей М. ©   (2006-12-26 13:42) [10]


> нужно обрабатывать прерывание от этого КОМ порта


Не нужно его обрабатывать, ОС сама с этим успешно справляется.


 
Сергей М. ©   (2006-12-26 13:43) [11]


> данных оно не передает


И о чем же тогда свидетельствует факт возникновения прерывания ?
Что ты собрался делать в обработчике этого прерывания, если уж заговорил об этом ?


 
o_serg   (2006-12-26 13:47) [12]

устройство покдлючено к линии DTR и меняет её состояние когда это необходимо, COM порт можно настроить чтобы при смене сигнала на этой линии генерировалось аппаратное прерывание назначенное порту.
на самом деле проблем с этим нет, в досе я уже давно все сделал и оно прекрасно работает, а вот в виндовс я не знаю как обработать прерывание.
В обработчике мне нужно считать промежутки времени между прерываниями.


 
Сергей М. ©   (2006-12-26 13:59) [13]

см. WaitCommEvent(EV_DSR)

И все. И ни в какие "прерывания" не нужно лезть - система все сделает сама


 
o_serg   (2006-12-26 14:05) [14]

а если прерывание генерируется с частотой около 1000 Гц
помоему было бы рациональнее написать драйвер...


 
Сергей М. ©   (2006-12-26 14:11) [15]


> помоему было бы рациональнее написать драйвер


Он уже написан и входит в состав ОС.
Ничего писать не надо, все уже написано за тебя, твое дело - грамотно и с максимальной эффективностью пользоваться WinAPI


> прерывание генерируется с частотой около 1000 Гц


Ты не учитываешь один (важнейший !) момент - Windows не является системой реального времени.


 
o_serg   (2006-12-26 14:15) [16]


> Ты не учитываешь один (важнейший !) момент - Windows не
> является системой реального времени

и я о том же!
потери времени я думаю будут много меньше если драйвер примет прерывание, засечет время, а потом уже когда будет необходимо (через 10-20 импульсов) передаст сообщение программе, нежели через АПИ виндовый драйвер будет после каждого импульса слать сообщение проге


 
Германн ©   (2006-12-26 14:18) [17]


> в досе я уже давно все сделал и оно прекрасно работает

Ну так и работай в ДОС. На хрена тебе лезть в Виндовс? Она сделана для других задач.


 
o_serg   (2006-12-26 14:21) [18]

для доса это устройство нафиг не нужно, я в досе только тестировал


 
Германн ©   (2006-12-26 14:22) [19]


> o_serg   (26.12.06 14:21) [18]
>
> для доса это устройство нафиг не нужно, я в досе только
> тестировал

А для Винды просто необходимо?


 
Сергей М. ©   (2006-12-26 14:23) [20]

Исп.код в режиме ядра выполняется в точно той же среде разделения времени, что и исп.код в пользовательском режиме.


 
o_serg   (2006-12-26 14:26) [21]

для меня да...
я вообще не понимаю зачем так от темы отклоняться. Мне нужен пример работающего драйвера под виндовс ХП с обработкой прерывания или хотя бы описание того как это сделать, я весь инет облазил и не нашел ничего  подходящего.
То что мне нужно написать драйвер я уже осознал, это не вопрос данного топика!


 
Сергей М. ©   (2006-12-26 14:26) [22]

Частотомер что ли сотворяешь ?)


 
Германн ©   (2006-12-26 14:28) [23]


> Мне нужен пример работающего драйвера под виндовс ХП с обработкой
> прерывания или хотя бы описание того как это сделать, я
> весь инет облазил и не нашел ничего  подходящего.

На cfqnt Microsoft ищи DDK, токмо он имхо платный.


 
o_serg   (2006-12-26 14:30) [24]

не совсем :)
можно конечно туда впаять микроконтроллер и написать прогу под него и элементарно передавать уже принятые и обработанные данные в ком порт, тогда никаких драйверов не надо. НО оно того не стоит :) подскажите плиз что нить...


 
Сергей М. ©   (2006-12-26 14:30) [25]


> Мне нужен пример работающего драйвера под виндовс ХП с обработкой
> прерывания или хотя бы описание того как это сделать


Тебе же уже сказали - см. [2]


> весь инет облазил и не нашел ничего  подходящего


Ну ведь врешь)

на wasm.ru ты не был, NTDDK ты не штудировал, [2] не рассматривал и не пробовал..


 
o_serg   (2006-12-26 14:32) [26]


> На cfqnt Microsoft ищи DDK, токмо он имхо платный

я такой объем не потяну, да и не обязательно DDK иметь чтобы дрова писать


 
Сергей М. ©   (2006-12-26 14:35) [27]


> да и не обязательно DDK иметь чтобы дрова писать


Скажу даже более - необязательно "дрова писать" для обработки прерываний.
Мало того - необязательно компилятор иметь, чтобы писать программы под любую ОС)


 
Германн ©   (2006-12-26 14:35) [28]


> да и не обязательно DDK иметь чтобы дрова писать

Ну ну. Нашему теляти...


 
oxffff ©   (2006-12-26 14:45) [29]


> o_serg   (26.12.06 14:30) [24]
> не совсем :)
> можно конечно туда впаять микроконтроллер и написать прогу
> под него и элементарно передавать уже принятые и обработанные
> данные в ком порт, тогда никаких драйверов не надо. НО оно
> того не стоит :) подскажите плиз что нить...


Для справки

Usb опрашивают с частотой 125 раз/сек, можно повысить до 1000 раз/сек.
Ps/2 от 80 до 120 раз/сек.


 
o_serg   (2006-12-26 14:49) [30]


> Мало того - необязательно компилятор иметь, чтобы писать
> программы под любую ОС)

Даже спорить не буду :)...
Попросил дать пример, получил только аргументы против дравера...........
Это что совсем так тяжело просто дать ссылку или скинуть примерчик из того же NTDDK, ну нет у меня инета чтоб его качать...
The end


 
Сергей М. ©   (2006-12-26 15:03) [31]


> Это что совсем так тяжело просто дать ссылку


Это что, так тяжело зайти на wasm.ru и просмотреть статьи на эту тему ?


> получил только аргументы против дравера


Потому что имеющийся штатный драйвер с успехом делает то же самое.


 
Ученик чародея ©   (2006-12-27 01:52) [32]

Написание драйверов для Windows NT 4.0
http://na.net.ua/index.php?ind=downloads&op=entry_view&iden=315
Всего 14 страничек.

Или такая книжечка
Справочник по базовым функциям API Windows NT/2000.
http://diamail.com.ua/cgi-bin/annot.cgi?id=888
всего 500 страничек


 
Ученик чародея ©   (2006-12-27 02:02) [33]

Ну или еще такая книжка
В.Солдатов - Программирование драйверов Windows
http://ltteam.net/2006/12/03/vsoldatov__programmirovanie_drajjverov_windows.html


 
o_serg   (2006-12-27 09:37) [34]

То что нужно, спасибо



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.068 c
15-1166026178
shulcsan
2006-12-13 19:09
2007.01.21
О среде разработки


15-1167323894
oldman
2006-12-28 19:38
2007.01.21
С Новым Годом...


4-1157332834
Viacheslav
2006-09-04 05:20
2007.01.21
Контекстное меню проводника.


5-1147103058
NORDmen
2006-05-08 19:44
2007.01.21
Компонент линия


1-1164629646
NeyroSpace
2006-11-27 15:14
2007.01.21
Вопрос про плагины (компонент TJvPlugin)