Текущий архив: 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