Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Технологии программирования > Железо. Написание драйверов
Перезагрузить страницу Перехват прерывания как реализовать
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
TheOS TheOS вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.07.2005
По умолчанию Перехват прерывания как реализовать - 22.07.2005, 12:10

Помогите!!! Нужно в винде (XP) перехватить системное прерывание ( прерывание по которому выполняются системные сервисы у винды.)
Как это реализовать?
Ответить с цитированием
  (#2 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 22.07.2005, 12:25

Написать драйвер.
Ответить с цитированием
  (#3 (permalink)) Старый
TheOS TheOS вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 14.07.2005
По умолчанию 23.07.2005, 10:40

Цитата:
Originally posted by Garik
[b]Написать драйвер.
Дык это понятно. а какой функцией поменять обработчик прерывания?
Я в ддк такой не нашёл
Ответить с цитированием
  (#4 (permalink)) Старый
Saint_German
Guest
 
Сообщений: n/a
По умолчанию 12.08.2005, 14:46

1. самое простое:
Код:
void setIntHandler(int vec, int newHandler)
{
    IDTR  idtr;
    PIDTGATE    idt;

    __asm    cli;
    __asm    sidt    idtr;
    
    idt = (PIDTGATE)idtr.base;
    idt[vec].off2 = newHandler >> 16;
    idt[vec].off1 = newHandler & 0xffff;
    __asm    sti;
}
2. сложнее, но надежнее:
Цитата:
Your driver and device need to be entirely ready to work correctly when you call IoConnectInterrupt—you might even have to service an interrupt before the function returns—so you normally make the call near the end of the configuration process. Some devices have a hardware feature that allows you to prevent them from interrupting. If your device has such a feature, disable interrupts before calling IoConnectInterrupt and enable the interrupts afterward.
см. WalterOney

Перехватив обработчик прерывания int2e это KiSystemService, но это так только для wnt/w2k, в wxp переключение режимов через команду sysenter.
Ответить с цитированием
  (#5 (permalink)) Старый
Vitaliy® Vitaliy® вне форума
Member
 
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.11.2005
По умолчанию 09.12.2005, 12:31

А можно по подробней о том как отключить существующую функцию обработки прирывания а после работы ее опять включить с помощью функций windows.
за ранее спасибо.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Olesya Olesya вне форума
Member
 
Сообщений: 1,485
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2002
По умолчанию 09.12.2005, 13:43

Если в DDK ненашел, значит плохо искал.
То что функция инсталяции ISR есть это стопудово.
Но тут следует ечесть одну вещь если на одной IRQ висит несколько устройств! Проверять является ли даное прерывание от твоего девайса.
В понедельник постараюсь поискать эту функцию в драйвере, который в свое время я писал.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написание собственного прерывания (проверьте) RenZo Assembler 0 21.04.2012 22:25
Прерывания работают или нет Dmt C++ Builder 5 14.06.2011 04:14
SSE и метод гаусса функция без прерывания grek-ru С/С++ 0 17.01.2009 02:48
Обработка прерывания Anatolich Железо. Написание драйверов 3 28.04.2007 16:21
Перехват звука как реализовать programer4ever Delphi 0 19.12.2006 17:07
Прерывания от com порта в qnx jyanis Железо. Написание драйверов 0 24.05.2006 19:10
Перехват прерываний как реализовать r00f Assembler 1 26.10.2005 06:42
Перехват пакетов по Pop3, как реализовать Orc Delphi 1 25.08.2005 19:40
Перехват данных как реализовать imported_mopo3 WinAPI 4 05.10.2004 14:00
Получение прерывания от модема Eri© Delphi 0 29.02.2004 15:07
Как сделать прерывания циклов imported_Ежик Lisp 2 21.10.2003 14:20
Не работает 12-я функция прерывания 33h Anonymous Assembler 5 06.08.2002 14:11



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов