Windows - вызов int

Тема в разделе "WASM.BEGINNERS", создана пользователем katrus, 17 янв 2008.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Извиняюсь за глупый вопрос ... Просто стало интересно, что в винде просиходит когда програмно делаем вызов прерывания. Скажем int 50h. В dos все было просто и понятно, в kernel mode аналогично, а вот, что происходит в user mode?
     
  2. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    происходит "ooops"
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Нет. Просиходит "ничего". Попробовал написать пример - абсолютно никакого эффекта.
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    katrus

    Ядро получает управление и смотрит, что надо сделать. А что надо -- зависит от номера прерывания и вида выполняемой программы.
     
  5. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    SII
    То есть я могу написать дрйвер который будет ловить int из user space application? Что то типа sysenter, только собственный?
     
  6. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    можешь :) только смысл?
     
  7. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Freeman
    Смысл - добавить свой системный вызов.

    Может знаете где можно почитать детали?
     
  8. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    маны от интела... посути вам стоит всего лишь добавить элемент в IDT
    http://www.intel.com/design/literature.htm
     
  9. EvilPhreak

    EvilPhreak New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    154
    Freeman
    Ну про маны это сильно, надо почитать любую книгу (стотью) о диспетчеризации прерываний в винде.
     
  10. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Можно и без драйвера - int 50h в нормальных условиях сгенерирует исключение #GP, которое благополучно превратится в Win32-исключение EXCEPTION_ACCESS_VIOLATION, которое можно перехватить и обработать, например, через SEH.
     
  11. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    не обязательно #GP
    вполне возможно #NP
     
  12. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Спасибо всем!

    мне нужно с дрйвером ...
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Тогда берешь и ставишь туда свой обработчик, модифицируя IDT. Причем отслеживая, чтобы поле Dpl было равно трём, чтобы обработчик мог вызываться из ring3.