Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Резидентний оброблювач клавіатури (перехоплення натискань клавіш і запис у файл)

Реферат Резидентний оброблювач клавіатури (перехоплення натискань клавіш і запис у файл)





зуватися програма. Останніми рядками секції ініціалізації викликається функція DOS 31h, яка виконує завершення програми із залишенням в пам'яті її резидентної частини.

Якщо програму запустити з клавіатури повторно, в пам'ять буде завантажена і залишиться резидентної її друга копія. Це погано не тільки тому, що даремно витрачається пам'ять, більш неприємним є вторинний перехоплення тих же векторів. Якщо резидентна програма після її активізації не звертався до старому вмісту перехоплених нею векторів, то друга копія повністю позбавить першу працездатності, і тоді повторна завантаження призведе тільки до витрачанню пам'яті. Якщо, проте, як це зазвичай і має місце, резидентна програма в процесі своєї роботи передасть управління старому обробникові перехопленого нею переривання, то нова копія резидентної програми, що зберегла в процесі ініціалізації адресу першої копії в якості вмісту перехоплюваних вектора, буде при кожній активізації викликати і першу копію. В результаті резидентна програма буде фактично виконуватися при кожному виклику двічі. У багатьох випадках таке повторне виконання порушить правильну роботу програми. Тому обов'язковим елементом будь резидентної програми є процедура захисту її від повторного завантаження, або, як кажуть, установки.

Найбільш поширеним методом захисту резидентної програми від повторної установки є використання переривання 2Fh, спеціально призначеного для зв'язку з резидентними програмами. При виклику цього переривання в регістрі АН задається номер функції (від 00h до FFh), а в регістрі AL - номер підфункції (у тому ж діапазоні). 00h - 7Fh зарезервовано для DOS/Windows 0B8h - 0BFh зарезервовано для мережевих функцій 0C0h - 0FFh відводиться для програм. p> Для того, щоб резидентна програма могла відгукнутися на виклик переривання int 2Fh, в ній повинен матися обробник цього переривання. Фактично всі резидентні програми, як системні, так і прикладні, мають такі обробники, через які здійснюється не тільки перевірка на повторну установку, але і взагалі зв'язок з резидентну програму: зміна режиму її роботи або одержання від неї в транзитну програму якихось параметрів. Завдання дії, яке належить виконати оброблювачу переривання 2Fh конкретної резидентної програми, здійснюється за допомогою номера підфункції, помещаемого перед викликом переривання в регістр AL

Таким чином, обробник переривання 2Fh резидентної програми повинен, насамперед, перевірити номер функції в регістрі АН; при виявленні "своєї" функції обробник аналізує вміст регістра AL і виконує витребувані дії, після чого командою iret передасть управління викликала його програмі. Якщо, проте, обробник виявив в регістрі АН "чужу" функцію, він повинен командою jmp CS: old_2fh передати управління по ланцюжку того оброблювачу, адреса якого був раніше у векторі 2Fh. В результаті виклик int 2Fh з будь-якої програми буде проходити по ланцюжку через всі завантажені резидентні програми, поки не досягне "с...


Назад | сторінка 4 з 23 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Переривання вагітності
  • Реферат на тему: Переривання і виключення
  • Реферат на тему: Цикли, переривання, компоненти для відображення тексту
  • Реферат на тему: Внутрішньоутробне вдосконалення людини і переривання вагітності
  • Реферат на тему: Культурно-розважальні програми на російському телеекрані (на прикладі прогр ...