Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание обработчика прерываний под Win32, пример кода 
:(
    Опции темы
shedon
Дата 22.5.2004, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Добрый день, я пишу библиотеку для работы с COM портами. Работаю я с ними на уровне портов ввода/вывода UART`а.
Для получения привилегий использую драйвер WinIO.
Возникла проблемма как написать свой обработчик прерываний, желательно код должен быть на VC со вставками на асме, если необхадимо.
Винда не позволяет выполнить комманду CLI и STI, хотя использую WinIO.
Спасибо!


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Baa
Дата 22.5.2004, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Я тебе предлагаю отказаться от WinIO и написать самому промежуточный драйвер. Если интересно, то могу даже рассказать как smile.gif


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
shedon
Дата 22.5.2004, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Цитата
Я тебе предлагаю отказаться от WinIO и написать самому промежуточный драйвер. Если интересно, то могу даже рассказать как 

Была такая мысля, но пока не могу найти где скачать DDK sad.gif


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Baa
Дата 23.5.2004, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



shedon, на мелкомягких уже не скачаешь, теперь только через файлообеменную сеть eMule например.



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
shedon
Дата 23.5.2004, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Свершилось ! Я нашёл DDK !!!
Цитата
Я тебе предлагаю отказаться от WinIO и написать самому промежуточный драйвер. Если интересно, то могу даже рассказать как 

Буду очень благодарен smile.gif


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Масяня
Дата 23.5.2004, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



Цитата(shedon @ 22.5.2004, 21:22)
Винда не позволяет выполнить комманду CLI и STI, хотя использую WinIO.

Но ведь все надо делать в режиме ядра, а CLI-STI ничего не дадут, WinNT это же не ДОС там есть такое понятие как IRQL.... на нем-то все и держится! А драйвер режима ядра может выполнить свою процедуру с CLI (запрет прерываний) да и только, а после все вернется на "круги своя" smile.gif, т.е. все надо делать в драйвере!!!

Это сообщение отредактировал(а) Масяня - 23.5.2004, 20:50
PM MAIL   Вверх
shedon
Дата 23.5.2004, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Ды к WinIo я и пытался использовать, для получения режима ядра. Но не фига не получилось. Эти операции похоже разрешены только в нулевом кольце, а по-этому придётся писать свой драйвер.


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Sined
Дата 23.5.2004, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 19.5.2004

Репутация: 1
Всего: 0



Цитата
Но ведь все надо делать в режиме ядра, а CLI-STI ничего не дадут, WinNT это же не ДОС там есть такое понятие как IRQL....

cli,sti идут прямо на ПКП насколько я помню, посему ни 1 винда не должна такого позволять.Ни на нулевом кольце--нигде...сама идея многозадачности летит на фиг.

shedon, тут уже была подобная тема и даже выкладывалсь болванка драйвера--самая простая длл. Поищи, если не найдешь у меня вроде на винте валялось что-то похожее(работает с посл. портами)--поищу....

Это сообщение отредактировал(а) Sined - 23.5.2004, 23:20
PM MAIL   Вверх
shedon
Дата 23.5.2004, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Цитата
cli,sti идут прямо на ПКП насколько я помню, посему ни 1 винда не должна такого позволять.Ни на нулевом кольце--нигде...сама идея многозадачности летит на фиг.

А в нулевом кольце винду ни кто не спросит biggrin.gif


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Масяня
Дата 24.5.2004, 04:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



Цитата(shedon)
Цитата
cli,sti идут прямо на ПКП насколько я помню, посему ни 1 винда не должна такого позволять.Ни на нулевом кольце--нигде...сама идея многозадачности летит на фиг.

А в нулевом кольце винду ни кто не спросит biggrin.gif

shedon прав! На нулевом кольце можешь делать что хочешь!
Когда я говорил о том, что "надо все делать в драйвере", то я имел в виду то, что если вызовишь CLI, то при возврате управления из процедуры драйвера Диспетчер ввода/вывода сам потом разрешит прерывания.

Это сообщение отредактировал(а) Масяня - 24.5.2004, 04:59
PM MAIL   Вверх
Sined
Дата 24.5.2004, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 19.5.2004

Репутация: 1
Всего: 0



Цитата
А в нулевом кольце винду ни кто не спросит

Именно поэтому она обидится и выбросит bsod.

PM MAIL   Вверх
Масяня
Дата 28.5.2004, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



shedon, написал я тут вот обработчик для IRQ12 в WinXP и все с ним заеб.. - могу дать, а вот например, на IRQ1 (клаву) WinXP не разрешила поставить, там в последнем обработчике IRQ1 ShareVector = FALSE. А тебе на что надо поставить обработчик?
PM MAIL   Вверх
Baa
Дата 28.5.2004, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Да на самом деле проще наерно написать фильтр на драйвер ком-порта. Зачем колесо-то изобретать?


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
shedon
Дата 29.5.2004, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Цитата
А тебе на что надо поставить обработчик?

На IRQ4.
Мне тут намекнули, что проблемма не в дровах, а в аппаратной части, вроде есть такой глюк почти у всех микросхем UART, они не всегда формируют прерывание, по приходу байтов.


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Масяня
Дата 29.5.2004, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



Щаз посмотрел в SoftIce’е на IRQ4: Share interrupt = FALSE, а это значит, что с помощью IoConnectInterrupt() обработчик не поставить в WinXP!

Цитата(shedon)

вроде есть такой глюк почти у всех микросхем UART, они не всегда формируют прерывание, по приходу байтов

Не знаю, надо искать по нему инфо

Это сообщение отредактировал(а) Масяня - 29.5.2004, 21:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.