Драйвер Клавиатуры Windows 7

Комментарии (24) Forever 2 июля 2012 в 02:26 +2 ↑ ↓ А почему вы не используете функции семейства InterlockedXxx? К тому же, при компиляции 64-битного когда компиляторы от Microsoft не поддерживают встроенный ассемблер. По крайней мере год назад не поддерживали. zed91 2 июля 2012 в 09:17 –1 ↑ ↓ Для этого в ядре есть SpinLocks amirul 2 июля 2012 в 21:16 +1 ↑ ↓ Здесь не нужны спинлоки — нужны именно InterlockedXxx функции для рефкаунта pbespechnyi 2 июля 2012 в 09:28 0 ↑ ↓ Я не использую их, потому что я посчитал, что > для нашего драйвера вполне достаточно использования ассемблерных вставок Конечно же, можно использовать InterlockedIncrement и InterlockedDecrement, для этого нужно также поменять тип переменной gnRequests на LONG. amirul 2 июля 2012 в 21:42 +2 ↑ ↓ Э-э-э. Для того, чтобы отказываться от стандартных примитивов (это intrinsic функции и они скомпилируются в код, близкий тому, что у Вас но при этом ВАЛИДНЫЙ для любых платформ и в любых обстоятельствах) нужно иметь причины более веские, чем «не хочется». Если Вы «без помощи зала» и «звонка гуглу» не сможете ответить на вопрос в чем отличия между InterlockedIncrement, InterlockedIncrementAqcuire, InterlockedIncrementRelease и InterlockedIncrementNoFence, то с вероятностью, близкой к единице, при попытке реализации собственного примитива синхронизации Вы напишете невалидный код. Более того, это будет самая мерзкая разновидность невалидности: race condition на НЕКОТОРЫХ платформах (включая, возможно, будущие IA), к тому же принципиально не трассируемый в отладчике. Ну и пара «придирок» по мелочам (хотя статья сама по себе неплохая): 1. Ваш драйвер не имеет ничего общего с WDM. Ну то есть вообще. Вижу стандартный legacy драйвер, а вот ни одного признака WDM не вижу. Это не хорошо и не плохо — просто название статьи вводит в заблуждение. А вообще, ознакомьтесь с WDF — он предоставляет немало плюшек по сравнению даже с WDM, не говоря уже о legacy. 2. VS2012 не только имеет темплейты для драйверов (после установки WDK), но умеет сама собирать, умеет сама готовить удаленную машину (включая настройку KD), деплоить туда драйвер, отлаживать, стирать, убирать, готовить есть. 3. DbgPrint/KdPrint — прошлый век же. WPP (или полноценный ETW) — наш метод. 4. Хардкод KeyboardClass0 — нехорошо, лучше IoGetDeviceInterfaces. Это не только поможет прицепиться ко всем клавиатурам, но еще и позволит цепляться ко всем новым через IoRegisterPlugPlayNotification. Ну или использовать WDM и регистрироваться фильтром класса (как делает сам kbdclass) 5. Блокирование Unload до завершения последнего Irp — УЖАСНО. Хотя бы попробовали отменить (IoCancelIrp) их сначала. pbespechnyi 2 июля 2012 в 22:09 +1 ↑ ↓ Спасибо за комментарий! 1. «В категории драйверов WDM также выделяются драйверы классов, минидрайверы, монолитные функциональные драйверы и фильтрующие драйверы.» Уолтер Они, «Использование Microsoft Windows Driver Model», Глава 1, страница 36. 2. На момент написания статьи VS2012 не было. 3. Чему научили, так и написали. 4. Хардкод — плохо, согласен. 5. Согласен, криво. Хочу ещё раз подчеркнуть«Статью писал давно, ещё на третьем курсе, сейчас уже почти ничего не помню. Но если есть вопросы, постараюсь ответить.» Сейчас занимаюсь делами далекими от ядра, а опубликовал, потому что пообещал в топике о драйвере на PureBasic. amirul 3 июля 2012 в 00:06 +1 ↑ ↓ 1. Я не совсем про это. All WDM drivers must: • Include Wdm.h, not Ntddk.h. (Note that Wdm.h is a subset of Ntddk.h.) • Be designed as a bus driver, a function driver, or a filter driver, as described in Types натали сборник скачать через торрент of WDM Drivers. • Create device objects as described in WDM Device Objects and Device Stacks. • Support Plug and Play (PnP). • Support power management. • Support Windows Management Instrumentation (WMI). Ну ладно, IRP_MJ_PNP, IRP_MJ_POWER и IRP_MJ_SYSTEM_CONTROL проходят вниз по стеку и фильтру их обрабатывать не нужно, но создание девайсов в DriverEntry, а не в AddDevice (и включение ntddk.h вместо wdm.h) — это явные признаки legacy драйвера. А фильтры и девайс стеки были всегда — так что это не показатель. По остальным пунктам — не принимайте близко к сердцу, это так критиканство для галочки (хотя может кому и полезно будет). Статья, повторюсь, мне в целом понравилась. Сейчас занимаюсь делами далекими от ядра, а опубликовал, потому что пообещал в топике о драйвере на PureBasic. Это да, сам офигел когда увидел. Но вообще, если Вы в принципе все еще занимаетесь драйверами (несмотря на то что СЕЙЧАС не занимаетесь), то лучше посмотрите в сторону WDF: фрейворк реализует «канонический» драйвер и стороннему девелоперу нужно только переопределять уникальное для его драйвера поведение (при этом, например в WDM/legacy, логику отмены запроса практически невозможно реализовать правильно, не прочитав специальный документ, а WDF берет всю заботу о подобных вещах на себя). Есть объект «буфер» который хранит указатель, размер и «вместимость» и может быть расширен вызываемой функцией (таким образом не нужно делать два вызова с проверкой на то, хватает ли места) и кучу прочих плюшек. И да, не стоит использовать DbgPrint — он медленный (весь вывод синхронизируется в отладчик) и поэтому всегда выключен в релизном коде (а WPP/ETW можно включать/выключать в рантайме), он практически не подлежит автоматической обработке, с ним тяжело работать постмортем — при наличии одного только дампа (DebugView имеет какие то эвристики для вытаскивания DbgPrint сообщений из дампа, но это неподдерживаемая фича и никаких гарантий вообще говоря нет) и так далее. kulinich 2 июля 2012 в 02:27 +3 ↑ ↓ Статья зачетная! Все вроде грамотно. Не то, что до этого было на хабре пару статей. pbespechnyi 2 июля 2012 в 09:36 0 ↑ ↓ Спасибо! Была ещё статейка о взаимодействии этого драйвера с приложением, но я её не уберёг. zed91 2 июля 2012 в 09:41 +1 ↑ ↓ UM-KM Guide pbespechnyi 2 июля 2012 в 09:43 +1 ↑ ↓ Не, это не она. zed91 2 июля 2012 в 10:21 0 ↑ ↓ Я знаю, это просто статья о взаимодействии драйверов с приложениями, думаю такое будет более полезно. just_wow 2 июля 2012 в 14:33 +3 ↑ ↓ Слава богу, C! sashkin 2 июля 2012 в 15:57 +1 ↑ ↓ Вы си от с++ не отличили?.. =) Кстати, по этому поводу вопрос автору. Разве писать драйвера на с++ это хороший тон? А как же с++ runtime и всё, что он с собой привносит? На сколько я помню в драйверах надо вызывать kernel space ф-ии выделения памяти и прочего т.к. они не используют обычный runtime заточенный для user space. В общем, было б интересно об этом что-то услышать… kulinich 2 июля 2012 в 16:13 +1 ↑ ↓ Я не отличаю. Покажите, пожалуйста, фрагмент кода из статьи, написанный на C++. sashkin 2 июля 2012 в 16:18 +1 ↑ ↓ Да вы что граждане :( extern "C" NTSTATUS DriverEntry(...) extern «C» это с++ директива а в makefile так ваще прямым текстом: SOURCES = DriverMain.cpp kulinich 2 июля 2012 в 16:36 +2 ↑ ↓ Да, но это не говорит о том, что при написании драйверов используется C++ (если ошибаюсь, ткните меня в бок). Цитата из книги Уолтера Они «Использование Microsoft Windows Driver Model»: Before I describe the code you’d write inside DriverEntry, I want to mention a few things about the function prototype itself. Unbeknownst to you and me (unless we look carefully at the compiler options used in the build script), kernel-mode functions and the functions in your driver use the __stdcall calling convention when compiled for an x86 computer. This shouldn’t affect any of your programming, but it’s something to bear in mind when you’re debugging. I used the extern “C” directive because, as a rule, I package my code in a C++ compilation unit—mostly to gain the freedom to declare variables wherever I please instead of only immediately after left braces. This directive suppresses the normal C++ decoration of the external name so that the linker can find this function. Thus, an x86 compile produces a function whose external name is _DriverEntry@8. sashkin 2 июля 2012 в 17:29 +1 ↑ ↓ Да, но это не говорит о том, что при написании драйверов используется C++ Вообще-то разговор шёл о том, что кое-кто не отличил си код от с++. =) Затем я просто спросил автора зачем вообще пример писался как с++ код если ни классов, ни других ООП преимуществ не использовалось (да и не может использоваться в kernel окружении)? Для меня это было не очевидно. Приведенная цитата объясняет зачем, но в таком случае подозреваю, что автор топика копипастил код из книги ;) kulinich 2 июля 2012 в 17:33 0 ↑ ↓ Ну так все мы копипастим время от времени ;) kulinich 2 июля 2012 в 17:35 0 ↑ ↓ А по поводу C/C++, да — я в упор не увидел extern «C». =( pbespechnyi 2 июля 2012 в 18:04 0 ↑ ↓ Автор не копипасил код из книги, он по ней учился. Ryadovoy 2 июля 2012 в 18:31 0 ↑ ↓ >>да и не может использоваться в kernel окружении Вы не правы, C++ успешно используется для написания драйверов. Ryadovoy 2 июля 2012 в 18:29 +1 ↑ ↓ Для написания драйвера на C++ нужно не так уж много: 1) Перегрузить глобальные операторы new/delete: void *__cdecl operator new(size_t size, unsigned long tag, POOL_TYPE pool); void __cdecl operator delete(void* p); 2) Не пользоваться глобальными объектами или реализовать initterm/atexit для вызова конструкторов/деструкторов глобальных объектов; 3) Использовать C++ по минимуму (мы не использовали С++ exceptions и сторонние библиотеки, даже STL) amirul 2 июля 2012 в 21:48 0 ↑ ↓ ontl.googlecode.com А вообще я тоже делал самописную библиотеку оберток над WDM. В конце концов затащил туда исключения и даже скачать windows 7 home basic oa cis and ge торрент вытащил часть KSTL из DriverWorkbench (интересно, их еще кто-то помнит?). Исключения — очень приятная штука, если пользоваться осторожно (хотя в ядре нужно и без исключений быть всегда бдительным) Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста. Пометьте топик понятными вам метками, если хотите Метки лучше разделять запятой. Например: общение, социальные сети, myspace.com, подростки, мердок скачать volkerball rammstein торрент или закрыть

Нашлось

64907 статей по запросу «драйвер клавиатуры windows 7»

драйвер клавиатуры windows 7
18.03.2017 18:41:56

Как обновить драйвера в Windows 7 - YouTube

13 июл 2012 ... http://www.teachvideo.ru/catalog/20 - еще больше обучающих роликов по операционным системам. http://facebook.com/teachvideo ...

драйвер клавиатуры windows 7
16.03.2017 17:41:56

Использование клавиатуры Apple в ОС Windows с Boot Camp ...

6 фев 2017 ... Использование экранной клавиатуры Windows для выполнения ... Boot Camp устанавливает вспомогательное ПО Windows (Драйверы) ...

драйвер клавиатуры windows 7
16.03.2017 18:41:56

Простейший WDM-драйвер / Хабрахабр

1 июл 2012 ... Windows 7/Windows 2008 Server R2 WDK, W7BASE ... Она будет вызываться, когда нажата или отпущена клавиша клавиатуры. Функция ...

драйвер клавиатуры windows 7
09.03.2017 17:41:56

Установка ОС Windows 7 и более ранних версий на компьютер ...

2 мар 2017 ... Windows 7: Home Premium, Professional или Ultimate (Boot Camp 4 или 5.1); Windows ... используйте клавиатуру и мышь с USB-подключением), или ... После того как установка драйверов завершится, войдите в ОС ...

драйвер клавиатуры windows 7
11.03.2017 17:41:56

Драйверы и руководства пользователя | Официальный сайт Acer

Найдите обновления BIOS, руководства пользователя, драйвера и патчи для ... утилиту для определения серийного номера (только для ОС Windows).

драйвер клавиатуры windows 7
16.03.2017 18:41:56

Keyboard Drivers Download for Windows | Free Driver Downloads ...

If Windows still does not recognize your Keyboard, your Keyboard Driver might be missing, corrupted or need to be .... Mad Catz R.A.T.7 Mouse (HID) Driver.

драйвер клавиатуры windows 7
17.03.2017 17:41:56

Download MICROSOFT Keyboard & Mouse drivers

Jan 29, 2017 ... Microsoft Wireless Pointing Device Driver 1.0.102.0 for Windows 10 ... Wireless Keyboard Filter Device Driver 1.0.103.0 for Windows 7 64-bit.

драйвер клавиатуры windows 7
14.03.2017 17:41:56

Если перестала работать клавиатура на ноутбуке | World-X

24 янв 2015 ... Если в качестве ОС – Windows XP, 7 или Vista, загрузить компьютер в ... то проблема заключается в некорректности работы драйверов.

Космические Рейнджеры 4 Скачать Короткое Резюме Образец Скачать Заявление Отпуск На Образец Земфира Сборник Скачать Торрент Звёздочки Спицами Схема Вязания Игра Карточная Белка Скачать Игоря Талькова Скачать Песни Дома Майнкрафт Скачать Карту Драйвер Для Scx-4200 Samsung Драйвер Клавиатуры Windows 7 Дмитрий Колдун Скачать Песню Драйвера На Samsung Scx-4220 Дополнения К Приказу Образец Гост Обозначения На Чертежах Доктор Стрэндж Фильм Скачать Вязаное Спицами Пальто Схемы Гост Замороженное Мясо Говядины Вязанные Цветы Схемы Крючком Вязаные Кардиганы Со Схемами Гост 10377-80 Винт Невыпадающий Геометри Даш Взломанный Скачать Скачать Игру Твоя Железная Дорога 2012 Через Торрент Скачать Игру 2 Сезон Ходячие Мертвецы Через Торрент Скачать Игру Моунт Бладе История Героя Через Торрент Скачать Игру Тотали Спайс Через Торрент На Компьютер