Глючит перехват прерывания

Тема в разделе "WASM.WIN32", создана пользователем MaDF, 24 фев 2006.

  1. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Привет всем!



    Сделал драйвер, поправил таблицу IDT и изменил обработчик прерывания на свой,

    чтобы приложение из режима пользователя могло обращаться к драйверу через прерывание.

    Когда тестю в VMware ентот драйвер, все работает идеально :) (тестил в 2k/xp/2k3)

    Но на реальной системе очень часто вылазит ошибка ммм точно не помню какая, (что-то

    обратилось по адресу 0xffffffff) и прога падает (такая же ошибка будет если вызвать

    прерывание, недоступное из режима пользователя). Даже если заключаю вызов прерывания

    в __try...__except (пишу на си), эта ошибка перехватывается, но иногда приложение

    падает вообще тихонько, без показа кода ошибки :) Просматривая таблицу IDT тулзой

    Interrupt Descriptor Table Dumber из KmdKit (при работающем драйвере) я вижу то это:

    004E 0008:804DD51C 0 P

    (перехватываю int 0x4E ;) то вот это:

    004E 0008:XXXXXXXX 3 P

    - т.е. обработчик то ставится мой, то восстанавливается обратно системный, непонятно как...

    мож винда следит за этим? :dntknw:

    Что вы думаете? Как поступить? ) Уже долго бьюсь над этой проблемой..



    ЗЫ таким способом я передаю драйверу кое-какие данные :))
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    А у тебя случайно не гипертрединговый процессор? Если да, то надо менять IDT на всех процессорах в системе. Короче не забывай учитывать SMP.
     
  3. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Угу, он самый :) ууух спасибо, хоть понял куда рыть Ж)
     
  4. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Что-то про HyperThreading найти инфы не могу... на intel.com какая-то фигня, документации в плане "как это запрограммировать" не нашел :dntknw:



    Ms Rem, посоветуй что-нибудь ;)
     
  5. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Извиняюсь, уже нашел :) в мануале от интел
     
  6. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Вот мой модуль для работы с прерываниями на SMP.

    [​IMG] 189873617__smp.rar
     
  7. netex

    netex New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    114
    Адрес:
    Russia
    На какие вектора в Win2000 посылаются IRQ от контроллера?
     
  8. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    2 Ms Rem: спасибо!

    2 netex: хз