Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Моніторинг активності користувача в ОС Windows XP

Реферат Моніторинг активності користувача в ОС Windows XP





ктів пристроїв) PS/2-клавіатури складається з:

. фізичного об'єкта пристрою клавіатури (PDO), створеного драйвером шини;

. функціонального об'єкта пристрою клавіатури (FDO), створеного і приєднаної до PDO драйвером i8042prt;

. опціональних фільтр-об'єктів пристрою клавіатури, що створюються фільтр-драйверами клавіатури, що розробляються сторонніми розробниками;

. верхнеуровневого фільтр-об'єкта пристрої класу клавіатури, створеного драйвером класу Kbdclass;


. 4 Обробка клавіатурного введення додатками


. 4.1 Потік необробленого введення

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

Підсистема Microsoft Win32 отримує доступ до клавіатури, використовуючи потік необробленого введення (Raw Input Thread, RIT), який є частиною системного процесу csrss.exe. Операційна система при старті створює RIT і системну чергу апаратного введення (system hardware input queue, SHIQ) .откривает об'єкт пристрій драйвера класу клавіатури для ексклюзивного використання і за допомогою функції ZwReadFile надсилає йому запит вводу-виводу (IRP) типу IRP_MJ_READ. Отримавши запит, драйвер Kbdclass відзначає його як очікує завершення (pending), ставить в чергу і повертає код повернення STATUS_PENDING. Потоку необробленого введення доводиться чекати завершення IRP, для чого використовується виклик асинхронної процедури (Asynchronous Procedure Call, APC).

Коли користувач натискає або відпускає одну з клавіш, системний контролер клавіатури виробляє апаратне переривання. Його обробник викликає спеціальну процедуру обробки переривання IRQ 1 (interrupt service routine, ISR), зареєстровану в системі драйвером i8042prt. Дана процедура зчитує з внутрішньої черги контролера клавіатури з'явилися дані. Обробка апаратного переривання повинна бути максимально швидкою, тому ISR ставить в чергу виклик відкладеної процедури (Deferred Procedure Call, DPC) I8042KeyboardIsrDpc і завершує свою роботу. Як тільки це стане можливо (IRQL знизиться до DISPATCH_LEVEL), DPC буде викликана системою. У цей момент буде викликана процедура зворотного виклику KeyboardClassServiceCallback, зареєстрована драйвером Kbdclass у драйвера i8042prt. KeyboardClassServiceCallback витягне зі своєї черги чекають завершення запит IRP, заповнить максимальну кількість структур KEYBOARD_INPUT_DATA, несучих всю необхідну інформацію про натисканнях/відпускання клавіші, і завершить IRP. Потік необробленого введення пробуджується, обробляє отриману інформацію і знову посилає IRP типу IRP_MJ_READ драйверу класу, який знову ставиться в чергу до наступного натискання/відпускання клавіші. Таким чином, у стека клавіатури завжди є принаймні один очікує завершенние IRP, і знаходиться він у черзі драйвера Kbdclass.



Малюнок 4. Потік необробленого введення

обробляє інформацію, що надійшла за наступним принципом (рис.4). Усі, хто прийшов клавіатурні події поміщаються в системну чергу апаратного введення, після чого вони послідовно перетворюються в повідомлення Windows (типу WM_KEY *, WM_? BUTTON * або WM_MOUSEMOVE) і ставляться в кінець черги віртуального введення (virtualized input queue, VIQ) активного потоку. У повідомленнях Windows скан-коди клавіш замінюються на коди віртуальних клавіш, що відповідають не розташуванню клавіші на клавіатурі, а дії, яке виконує ця клавіша. Механізм перетворення кодів залежить від активної розкладки клавіатури, одночасних натискань інших клавіш (наприклад, SHIFT) та інших факторів.

Коли користувач входить в систему, процес Windows Explorer породжує потік, який створює панель завдань і робочий стіл (WinSta0_RIT). Цей потік прив'язується до RIT. Якщо користувач запускає MS Word, то його потік, який створив вікно, негайно підключиться до RIT. Після цього потік, що належить Explorer, відключається від RIT, так як одноразово з RIT може бути пов'язаний тільки один потік. При натисканні клавіші в SHIQ з'явиться відповідний елемент, що призведе до того, що RIT пробудиться, перетворює подія апаратного введення в повідомлення від клавіатури і помістить його в VIQ потоку додатки MS Word.


. 4.2 Обробка повідомлень конкретним вікном

Стандартний цикл обробки повідомлень зазвичай виглядає наступним чином:


while (GetMessage ( amp; msg, 0, 0, 0))

{( amp; msg); ( amp; msg);

}


За допомогою функції GetMessage події від клавіатури витягуються з черги і перенаправляються за допомог...


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





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

  • Реферат на тему: Резидентний оброблювач клавіатури (перехоплення натискань клавіш і запис у ...
  • Реферат на тему: Розробка програми-драйвера клавіатури
  • Реферат на тему: Розробка контролера матричної клавіатури на мікроконтролері К1816ВЕ48
  • Реферат на тему: Сортування вводяться з клавіатури слів
  • Реферат на тему: Переклад тексту в іншу розкладку клавіатури