Переопределение назначений клавиш на клавиатуре в операционной системе Windows (48037)

Посмотреть архив целиком

Факультет: Информатика и системы управления


Кафедра: Программное обеспечение ЭВМ и информационные технологии





РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА


к курсовому проекту на тему:




"Переопределение назначений клавиш на клавиатуре

в операционной системе Windows"














2009 г.


Оглавление


Введение 4

1. Аналитический раздел 5

1.1 Постановка задачи 5

1.2 Архитектура Windows XP 5

1.3 Модель WDM 8

1.4 Стек клавиатуры 9

1.5 Структура драйвера 12

DiverEntry 12

AddDevice 12

DriverUnload 13

Процедуры обработки пакетов IRP 13

Функция обработки пакетов IRP_MJ_DEVICE_CONTROL 15

Функция обработки пакетов IRP_MJ_READ 16

Функция обработки пакетов IRP_MJ_PNP 16

ISR 16

1.6 Анализ методов решения задачи 17

2. Конструкторский раздел 19

2.1 Точки входа разрабатываемого драйвера-фильтра 19

DiverEntry 19

AddDevice 20

DriverUnload 21

Процедуры обработки пакетов IRP 21

Функция обработки пакетов IRP_MJ_DEVICE_CONTROL 21

Функция обработки пакетов IRP_MJ_READ 22

Функция обработки пакетов IRP_MJ_PNP 22

Обработка остальных пактов IRP 23

2.2 Взаимодействие компонентов системы 24

2.3 Размещение драйвера в памяти 24

2.4 Переопределение клавиш 25

2.5 Установка драйвера в системе 27

3. Технологический раздел 30

3.1 Выбор языка программирования и средств программирования 30

Драйвер-фильтр 30

Программа для установки драйвера 31

Программа для управления драйвером 31

3.2 Структуры данных проекта 31

Информация о нажатиях и отпусканиях клавиш 31

Структура списка замен 33

Дополнительная информация 33

3.3 Интерфейс управляющего приложения 34

3.4 Тестирование драйвера-фильтра клавиатуры 35

Заключение 37

Список литературы 38




Введение


Очень часто возникает необходимость в переназначении клавиш на клавиатуре.

  • Стандартное расположение клавиш неудобно при работе с определенным программным обеспечением

  • При переходе с одного типа клавиатуры на другой трудно привыкнуть к новому расположению клавиш.

Во многих случаях определенные клавиши могут помешать работе. Случайное нажатие на такие клавиши замедляет работу пользователя. Желательно, чтобы нажатие этих клавиш не приводило ни к каким действиям.

Поэтому задача переопределения и отключения клавиш является на сегодняшний день актуальной.

Существуют программы, решающие поставленную задачу. Примерами таких программ являются программа Марка Руссиновича Ctrl2 и программа MagicKey.

Программа Ctrl2 заменяет клавишу CapsLock на клавишу «левый Ctrl». Она реализована в виде драйвера.

Программа MagicKey, позволяет менять местами алфавитно-цифровые клавиши. Она реализована в виде драйвера и пользовательского приложения для управления этим драйвером.




1. Аналитический раздел


1.1 Постановка задачи


В соответствии с заданием на курсовую работу, необходимо разработать программное обеспечение, позволяющее переопределять назначение клавиш на клавиатуре.

  • Программное обеспечение должно позволять переопределять все клавиши клавиатуры

  • Программное обеспечение должно позволять отключать клавиши.

  • Программное обеспечение должно позволять устанавливать список осуществляемых замен.

  • Программное обеспечение не должно нарушать и замедлять работу системы.


1.2 Архитектура Windows XP


Windows XP является следующей – после Windows 2000 и Windows Millennium – версией операционной системы Microsoft Windows. Наиболее распространены реализации данной ОС для платформы Intel x86 в одно- или многопроцессорных конфигурациях, однако существуют также версии для DEC Alpha и MIPS. Данная операционная система использует защищённый режим центрального процессора, реализует механизмы виртуальной памяти и многозадачности.

Windows XP использует два уровня привилегий: уровень привилегий 0, соответствующий коду режима ядра и уровень привилегий 3, соответствующий коду прикладных задач (всего существует четыре уровня привилегий). Уровень привилегий накладывает определённые ограничения: в пользовательском режиме не могут выполняться привилегированные инструкции процессора и не разрешено обращение к защищённым страницам в памяти. Эти ограничения накладываются для обеспечения безопасности работы системы. Пользовательское приложение не должно иметь возможность – в результате ошибки или преднамеренно – вносить изменения в системные таблицы или в память других приложений. В частности, такие ограничения запрещают пользовательскому приложению напрямую управлять внешними устройствами.

В Windows XP обеспечение обмена данными и управление доступом к внешнему устройству возлагается на его драйвер. Ввод и вывод в драйверах осуществляется пакетами – IRP (Input/Output Request Packet). Запросы на ввод / вывод, посылаемые приложениями или другими драйверами, обрабатываются драйвером, после чего запрашивающей программе в том же пакете посылается статус завершения операции.

Архитектура ввода / вывода в Windows XP имеет иерархическую структуру. Для осуществления операции ввода / вывода пользовательское приложение должно вызвать одну из функций API. Эта функция создает необходимый IRP пакет и направляет его подсистеме ввода / вывода. Подсистема ввода / вывода направляет IRP пакет необходимому драйверу. Драйвер осуществляет обращение к устройствам, используя функции HAL.

HAL (Hardware Abstraction Layer) – это слой программного обеспечения, который скрывает специфику аппаратной платформы от остальных компонентов системы. Он обеспечивает малые затраты при переносе системы или элементов программного обеспечения. На Рис. 1. показана архитектура ввода / вывода Windows XP.



Рис. 1. Архитектура ввода / вывода Windows XP


Управление внешним устройством в общем случае сводится к заполнению регистров контроллера необходимыми данными. Монопольный доступ драйвера к этим регистрам гарантируется операционной системой. Очевидно, что при данных обстоятельствах требуется, чтобы драйвер устройства выполняется в режиме ядра. В архитектуре Windows XP существуют так называемые драйверы виртуальных устройств для поддержки DOS‑приложений, исполняющиеся в реальном режиме.

Классификация драйверов Windows XP

  • Драйверы режима ядра

      • Драйверы файловых систем

      • Унаследованные

      • Драйверы Plug and Play

      • Видеодрайверы

  • Драйверы пользовательского режима

      • Драйверы виртуальных устройств


1.3 Модель WDM


Windows Driver Model (WDM) – это стандартная спецификация Microsoft для разработчиков драйверов устройств. Она поддерживается в операционных системах Windows 98/Me/2000/XP. Компания Microsoft требует, чтобы все новые драйверы под эти операционные системы создавались по этой спецификации. Для этого от них требуется чёткое следование структуре WDM, поддержка Plug and Play и управления электропитанием.

Драйверная модель WDM построена на организации и манипулировании слоями «Объектов физических устройств» и «Объектов функциональных устройств». Объект-устройство – это особая структура данных, создаваемая системой для взаимодействия программного и аппаратного обеспечения. Объект PDO создается для каждого найденного элемента аппаратуры, подключенного к шине данных. Объект FDO предлагает «олицетворение» каждой логической функции, которую видит в устройстве программное обеспечение верхних уровней.



Функциональным Объектам устройств разрешается окружать себя Объектами Фильтрами (Filter Device objects). Соответственно, каждому FiDO объекту сопоставлен драйвер, который выполняет определенную работу. Объукты фильтры подразделяются на фильтры нижнего уровня и фильтры верхнего уровня. И тех и других может существовать произвольное количество. Они модифицируют процесс обработки запросов ввода / вывода. Объекты FDO и FiDO отличаются только в смысловом отношении. FDO объект и его драйвер считаются главными. Они обычно обеспечивают управление устройством, а объекты FiDO являются вспомогательными.

Все объекты FDO и FiDO позиционируют себя в стеке устройств. Порядок объектов в стеке определяет порядок обработки запросов ввода-вывода. Если необходимо перехватить и обработать запрос, непосредственно идущий от пользователя, то нужно устанавливать верхний фильтр. Если же нужно отслеживать обращение к портам ввода вывода, обрабатывать прерывания, то нужен нижний фильтр. Данная модель позволяет драйверу устанавливать callback процедуры. Когда запрос начинает обрабатываться, то он обрабатывается последовательно всеми драйверами стека устройства (исключая ситуацию, когда какой-либо драйвер сам завершит обработку запроса). После этого диспетчер ввода-вывода передает запрос callback процедуре каждого драйвера стека. Сначала запрос передается callback процедуре последнего драйвера который в стеке, потом процедуре предпоследнего драйвера и.т. д. Callback процедуры нужны для того, чтобы обработать прочитанную из устройства информацию. Если фильтр обрабатывает запросы на чтение, то когда этот запрос поступит в драйвер информация еще не будет считана. Поэтому драйверу необходимо установить callback функцию. При ее вызове запрос уже будет содержать считанные данные.


1.4 Стек клавиатуры


Физическую связь клавиатуры с шиной осуществляет микроконтроллер клавиатуры Intel 8042. На современных компьютерах он интегрирован в чипсет материнской платы. Этот контроллер может работать в двух режимах: AT‑совместимом и PS/2‑совместимом. Почти все клавиатуры уже давно являются PS/2‑совместимыми. В PS/2‑совместимом режиме микроконтроллер клавиатуры также связывает с шиной и PS/2‑совместимую мышь. Данным микроконтроллером управляет функциональный драйвер i8042prt. Драйвер i8042prt создает два безымянных объекта «устройство» и подключает один к стеку клавиатуры, а другой к стеку мыши. Поверх драйвера i8042prt, точнее, поверх его устройств, располагаются именованные объекты «устройство» драйверов Kbdclass и Mouclass. Драйверы Kbdclass и Mouclass являются так называемыми драйверами класса и реализуют общую функциональность для всех типов клавиатур и мышей, т.е. для всего класса этих устройств. Оба эти драйвера устанавливаются как высокоуровневые драйверы.


Случайные файлы

Файл
92554.rtf
8305.rtf
128431.doc
84897.rtf
54.doc




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.