Обработчик свободного софтверного прерывания

Тема в разделе "WASM.NT.KERNEL", создана пользователем retmas, 10 июл 2008.

  1. retmas

    retmas New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    100
    Господа! Кто знает легальный способ с помощью документированных сервисов ядра (ddk)
    зарегистрировать обработчик прерывания из драйвера, чтобы приложение (user mode)
    могло просто вызвать int 0xxx и драйвер выполнил какие-нить действия.
    Лучше пример или статью) THANX
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    retmas
    Примерно так:
    Код (Text):
    1. void int_hook(int num, void *handler, void **old) {
    2.    IDT_STRUCT Idt;
    3.    __asm {
    4.       push ebx
    5.       push esi
    6.       cli
    7.       sidt [Idt]
    8.       mov esi, handler
    9.       mov ebx, Idt.Base
    10.       mov eax, num
    11.       shl eax, 3
    12.       xchg [ebx+eax+0], si
    13.       rol esi, 16
    14.       xchg [ebx+eax+6], si
    15.       rol esi, 16
    16.       mov [old], esi
    17.       sti
    18.       pop esi
    19.       pop ebx
    20.    }
    21. }
     
  3. retmas

    retmas New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    100
    Thnx. А как установить, какой вектор свободен?? и разрешит ли винда приложению выполнить инструкцию int 0xxx??
     
  4. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Советую почитать что-нибудь вроде "Процессор I386 в защищенном режиме" и не клянчить ответов на вопросы.
     
  5. retmas

    retmas New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2005
    Сообщения:
    100
    Хотелось бы просто найти пример решения подобной задачи!!
     
  6. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Погугли инструкцию sidt - есть достаточно примеров.
     
  7. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    IoConnectInterrupt возможно