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

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





наступної резидентної програми, і якщо відновити старе вміст вектора, ця наступна програма "зависне", позбавивши засобів свого запуску. Тому на-надійно можна вивантажити тільки останню із завантажених резидентних програм.

У нашій програмі подфункция 00h переривання 2Fh служить для перевірки на повторну установку, а подфункция 01h - для вивантаження. У секцію ініціалізації додані рядки збереження старого вмісту вектора 09h. Це виконується точно так само, як і для вектора 2Fh - за допомогою функції DOS 35h. Старий вектор зберігається в комірці old_09h, що розміщується в резидентної частини програми. Оскільки вивантаження програми виконується за допомогою переривання 2Fh, текст обробника цього переривання ускладнюється.

Резидентний обробник переривання 2Fh насамперед перевіряє номер функції, що надійшов в регістрі АН, Якщо цей номер відрізняється від F1h, управління передається наступного оброблювачу по ланцюжку. Далі аналізується вміст регістру AL. Якщо AL = 00h, виконуються дії по захисту від повторного завантаження. Якщо AL = 01h, здійснюється перехід на мітку uninstall для виконання дій з вивантаження програми. При будь-якому іншому номері підфункції керування передається наступному оброблювачу по ланцюжку.

За міткою uninstall здійснюється збереження використовуваних далі регістрів (що робиться швидше для краси, ніж з потреби) і функцією DOS 25h відновлюється з осередків old_09h і old_2Fh початковий вміст відповідних векторів. Далі з осередки зі зміщенням 2Ch щодо початку PSP в регістр ES завантажується адреса оточення програми. Сегментна адреса вивільняється блоку пам'яті - єдиний параметр, необхідний для виконання функції DOS 49h. Розмір вивільняється блоку DOS відомий, він зберігається в блоці управління пам'яттю (МСВ). Далі звільняється блок пам'яті з самою програмою. Сегментна адреса цього блоку (адреса PSP) знаходиться в регістрі CS. Нарешті, командою iret управління передасться в програму, що викликала переривання 2Fh.

Функція 49h оповіщає DOS про те, що даний блок пам'яті вільний і може надалі використовуватись DOS. Це, однак, не заважає виконуватися завершальним рядках програми (в даному випадку - команді iret), оскільки звільнення пам'яті не руйнує її вмісту. Наша резидентна програма фізично зітреться лише після того, як в пам'ять буде завантажена чергова виконувана програма.

Якщо програма запускається з клавіатури із зазначенням будь-яких параметрів (імен файлів, ключів, які визначають режим роботи програми і інш.), то DOS, завантаживши програму в пам'ять, поміщає всі символи, введені після імені програми (так званий хвіст команди) в префікс програмного сегмента програми, починаючи з відносного адреси 80h. Хвіст команди міститься в PSP в цілком певному форматі. У байт за адресою 80h DOS заносять число символів у хвості команди (включаючи пробіл, що розділяє на командному рядку саму команду і її хвіст). Далі (починаючи з байта за адресою 81h) сл...


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





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

  • Реферат на тему: Культурно-розважальні програми на російському телеекрані (на прикладі прогр ...
  • Реферат на тему: Порівняльний аналіз програми Занкова і традиційної програми
  • Реферат на тему: Створення програми, що включає всі програми лабораторних робіт
  • Реферат на тему: Управління інтерфейсом програми 1С за допомогою OLE
  • Реферат на тему: Розробка програми-драйвера клавіатури