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

2016-07-30СтудИзба

Описание файла

Документ из архива "Переопределение назначений клавиш на клавиатуре в операционной системе Windows", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48037"

Текст 4 страницы из документа "48037"

Программа для управления драйвером представляет собой оконное приложение. Написана она была в среде C++ Builder. Поскольку приложение предназначено для пользователя., то оно должно иметь красивый и понятный интерфейс. Данная среда содержит множество стандартных визуальных компонент. Позволяющих осуществить поставленную задачу. Для приложения скорость и объем не является критичным параметром. Поэтому выбор C++ Builder можно считать оптимальным.

В приложении используется технология объектно-ориентированного программирования. Без ее использования организация оконного интерфейса выглядела бы очень запутанной.

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

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

Скэнкоды нажатых или отпущенных клавиш хранятся в системном буфере. Доступ к этому буферу можно получить, если прочитать данные по адресу, хранящемуся в IRP пакете. Адрес хранится в поле AssociatedIrp. SystemBuffer. Буфер представляет собой массив структур типа KEYBOARD_INPUT_DATA. Она состоит из следующих полей:

  • UnitId типа USHORT. В нем хранится номер устройства, на котором нажали или отпустили клавишу.

  • MakeCode типа USHORT. В этом поле хранится скэнкод нажатой или отпущенной клавиши. Скэнкод, переданный в этом поле, не определяет клавишу однозначно. Для полной идентификации клавиши необходимо значение поля Flags.

  • Flags типа USHORT. Это поле несет дополнительную информацию о клавише, а так же определяет, нажали клавишу или отпустили. Если нулевой бит равен 0, то значит клавиша нажата, если же он равен 1, то она отпущена. Биты 1 и 2 используются для идентификации клавиши.

  • Reserved типа USHORT. Поля является зарезервированным.

  • ExtraInformation типа ULONG. Это поле содержит дополнительную информацию об устройстве.

Все клавиши, кроме клавиши Pause, вырабатывают одну запись при нажатии и одну при отпускании.

  • Клавиша Pause вырабатывает 4 записи, если она была нажата без Ctrl:

    • Скан код равен 29, флаги равны 4

    • Скан код равен 69, флаги равны 0

    • Скан код равен 29, флаги равны 5

    • Скан код равен 69, флаги равны 1

Если клавиша Pause была нажата вместе с Ctrl, то она выдает 2 записи:

    • Скан код равен 70, флаги равны 2

    • Скан код равен 70, флаги равны 3

  • Бит 2 равен 0, а бит 1 равен 1 в поле Flags у следующих клавиш: Insert, Delete, PageUp, PageDown, Home, End, PrintScreen, правй Ctrl, правй Alt, Enter на дополнительной клавиатуре, обратный слеш на дополнительной, стрелки, клавиши Windows, клавиша всплывающего меню.

  • У всех остальных клавиш биты 1 и 2 поля Flags равны 0.

Клавиша PrintScreen – это единственная клавиша, которая меняет выдаваемый скэнкод в зависимости от того, нажата ли другая. PrintScreen меняет скэнкод в зависимости от Alt.

Вместе с Alt PrintScreen выдает:

  • Скан код равен 84, флаги равны 0 (при нажатии)

  • Скан код равен 84, флаги равны 1 (при отпускании)

Без Alt PrintScreen выдает:

  • Скан код равен 55, флаги равны 2 (при нажатии)

  • Скан код равен 55, флаги равны 3 (при отпускании)

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

Список замен замен – это массив структур ChangeStruct. Она состоит из следующих полей:

  • f1 типа UCHAR. Поле содержит дополнительную, идентифицирующую заменяемую клавишу.

  • Scan1 типа UCHAR. Поле содержит скэнкод заменяемой клавиши

  • f2 типа UCHAR. Поле содержит информацию о клавише, на которую заменяют.

  • Scan2 типа UCHAR. Поле содержит скэнкод клавиши, на которую заменяют.

Фактически поля f1 и f2 содержат 1 и 2 бит поля Flags структуры KEYBOARD_INPUT_DATA. Они помогают идентифицировать клавишу, которая заменяется, и на которую происходит замена.

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

При создании FDO выделяется память под структуру DEVICE_EXTENSION, в эта структура состоит всего из одного поля. Это поле TopOfStack типа PDEVICE_OBJECT. Оно содержит указатель на FDO, расположенное ниже в стеке клавиатуры, и используется для передачи IRP пакетов ниже по стеку. Адрес этой структуры находится в поле DeviceExtension нашего FDO.

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

Интерфейс управляющего приложения состоит из двух окон. Первое окно представляет собой модель клавиатуры, оно является главным в программе. Второе окно предназначено для вывода информации и называется информационным.

При нажатии на интересующую кнопку на главном окне она вдавливается, и красным цветом подсвечивается кнопка, на которую заменяется выбранная кнопка. При этом появляется информационное окно, содержащее следующие параметры:

  • Название выбранной кнопки

  • Название кнопки, на которую происходит замена

  • Состояние кнопки (включена или выключена)

Если необходимо переопределить кнопку, то нужно щелкнуть по этой кнопке. В информационном окне появится информация об активизированной кнопке. Далее необходимо нажать на кнопку «Заменить», она расположена в информационном окне. И затем щелкнуть по кнопке, на которую необходимо произвести замену.

После того как желаема конфигурация определена, нужно нажать кнопку «Установить». После этого информация будет отослана драйверу, и изменения вступят в силу. Если необходимо узнать, какие замены производит драйвер на данный момент, то нужно щелкнуть по кнопке «Принять».

Для быстрого восстановления стандартных настроек клавиатуры предусмотрена кнопка «По умолчанию». Она загружает стандартную конфигурацию. Чтобы она вступила в силу, необходимо нажать на кнопку «Установить».

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

Драйвер был протестирован с использованием стандартной тестирующей утилиты DriverVerifier пакета DDK. С его помощью были проведены следующие тесты:

  • Операции с пулами памяти

  • Корректность уровней IRQL, на которых выполняется код драйвера

  • Обнаружение взаимоблокировок

  • Нехватка ресурсов

  • Нетипичные запросы к драйверу

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

Для отладки драйвера использовалась программа DebugView. С помощью этой программы любой драйвер может выводить на экран отладочную информацию. При отладке эта программа позволила отследить процесс переопределения клавиш.

Драйвер использовали трое человек в течение месяца, и ошибок за этот период ими обнаружено не было.

Заключение

В данной работе рассмотрен вопрос, связанный с разработкой драйверов устройств в системе Windows, и реализован драйвер-фильтр клавиатуры.

Разрабатываемый драйвер позволяет

  • переопределять значение любых клавиш клавиатуры

  • отключать клавиши клавиатуры

Драйвер-фильтр отвечает всем современным требованиям, накладываемым Windows на драйверы.

Драйвер был протестирован с помощью тестирующих утилит Microsoft и успешно выдержал все тесты. Тестирование показало корректную работу.

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

  1. Кузьмин И. Драйверы уровня ядра системы Windows XP // Программист, – М.:ООО «Викфилд». – №11, 2003

  2. Солдатов В.П. Программирование драйверов Windows. Изд. 2-е, перераб. и доп. М.: ООО «Бином-Пресс», 2004 г.

  3. MSDN Library, Copyright 1987–2004 Microsoft Corporation

  4. Форум и публикации проекта «Первые шаги» – www.firststeps.ru.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5184
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее