Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/40: Рейтинг темы: голосов - 40, средняя оценка - 4.73
6 / 6 / 3
Регистрация: 12.03.2014
Сообщений: 341

Драйвер на ассемблере

20.01.2017, 22:51. Показов 8055. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поставили цель написать курсовую. В качестве работы выступает драйвер для ОС Windows под ноутбук с процессором x86, написанный на ассемблере.
Для обучения выбрал FASM.
За пару дней какое-то понимание языка ассемблера пришло. Все, что я понял, это лишь то, что я могу создавать в адресном пространстве памяти "переменные" (заводить значения), записывать в регистры процессора и выполнять над регистрами различные операции, а также вызывать прерывания.
Но я понятия не имею, как это может помочь написать мне драйвер. Все предлагают взять язык высокого уровня, но они не подходят под мои критерии выполнения задания. Пробегал по форуму и видел, что где-то начинают подключать библиотеки Windows API.
Вокруг много разнородной информации, что я запутался.
Я не знаю, как правильно писать драйвер на ассемблере. Даже не представляю, какими средствами это можно сделать.
Нужен вектор. Пожалуйста, подскажите, с чего стоит начать.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2017, 22:51
Ответы с готовыми решениями:

Скачал драйвер для ATI и при загрузке пишет не найден драйвер
Скачал драйвер для ATI и при загрузке пишет ненайден драйвер поиска,что делать7

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

Драйвер монитора, действительно ли драйвер?
Давно оспариваю такой вопрос - диск прилагаемый к монитору, в котором есть профиль цветовой, и простое ПО по управлению параметрами,...

3
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
21.01.2017, 10:22
Лучший ответ Сообщение было отмечено magirus как решение

Решение

Цитата Сообщение от Bolbine84455 Посмотреть сообщение
Я не знаю, как правильно писать драйвер на ассемблере. Даже не представляю, какими средствами это можно сделать.
Нужен вектор. Пожалуйста, подскажите, с чего стоит начать.
Начни с изучения документации по программированию драйверов в Windows.
Она начинается здесь:

Getting started with Windows drivers
https://msdn.microsoft.com/en-... s.85).aspx

Также где-то в сети есть руководство от Four-F по разработке драйверов на ассемблере,
называется KmdTut.

Еще я собирал полезные ссылки по данной теме здесь:

Документация и загрузки для разработчика драйверов

Сейчас для разработки драйверов под Windows есть два основных инструмента:

1. Window Driver Kit 7.1

Бесплатный набор инструментов, доступен для загрузки с сайта Microsoft:
https://www.microsoft.com/en-u... x?id=11800

Позволяет разрабатывать драйверы под все версии Windows, начиная с Windows XP и
Windows Server 2003. Среды разработки (IDE) как таковой нету, но можно, например,
использовать VisualDDK:

http://visualddk.sysprogs.org/

либо в Visual Studio самому прописывать нужные ключи сборки, например в Pre/Post-build events,
управляя всем процессом самостоятельно.

2. Visual Studio 2015 + Windows SDK 10 + Windows Driver Kit 10

Скачать WDK, WinDbg и связанные средства
https://developer.microsoft.co... driver-kit

WDK 8 и выше интегрирован в Visual Studio и позволяет пользоваться "из коробки"
всеми преимуществами интегрированной среды разработки. Соответствие между
версиями Visual Studio и WDK такое:

WDK8 - Visual Studio 2012
WDK8.1 - Visual Studio 2013
WDK10 - Visual Studio 2015

К сожалению, разработка в последних версиях WDK поддерживает только
целевые версии Windows 7 и выше, так что если нужна совместимость с
Windows XP, придется использовать WDK 7.1.

Кстати, средства разработки Microsoft также поддерживают ассемблер (MASM).
Например, в WDK 7.1 достаточно положить свой .asm-файл в подпапку,
соответствующую архитектуре (i386 или amd64) и добавить в файл sources
ссылку на него в виде I386_SOURCES или AMD64_SOURCES соответственно.

Будут конкретные вопросы - задавай.
6
22.01.2017, 16:34  [ТС]

Не по теме:


Цитата Сообщение от Убежденный Посмотреть сообщение
Будут конкретные вопросы - задавай.
Спасибо за информацию выше. Я правильно понимаю, что я не смогу написать драйвер без Windows API? Т.е. не смотря на то, какой язык я буду использовать, мне все равно придется использовать библиотеки, т.е. на чистом Ассемблере драйвер написать - самоубийство?

0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
22.01.2017, 19:12
Цитата Сообщение от Bolbine84455 Посмотреть сообщение
не смогу написать драйвер без Windows API?
В драйверах ядра недоступен Windows API. Там свой, ядерный API. Например, то,
что в WinAPI делается с помощью CreateFile, в kernel API делается через ZwCreateFile.
Но никакой "симметрии" между этими двумя API нет, несмотря на иногда похожие названия.

Цитата Сообщение от Bolbine84455 Посмотреть сообщение
Т.е. не смотря на то, какой язык я буду использовать, мне все равно придется использовать библиотеки
Не зависимо от языка, тебе все равно придется работать с API ядра, напрямую или
через какие-то "прослойки" в виде библиотек.

Вот здесь доступны официальные исходники примеров разработки драйверов от MS,
они все (99%) написаны на C или на C++:

Microsoft/Windows-driver-samples
https://github.com/Microsoft/W... er-samples

Советую ознакомиться. Чтобы хотя бы иметь представление об объемах кода,
который приходится писать, и о применяемых подходах к разработке.

Цитата Сообщение от Bolbine84455 Посмотреть сообщение
на чистом Ассемблере драйвер написать - самоубийство?
Ну почему же? Вовсе нет. Просто времени займет дольше.
"Экосистема" разработки драйверов адаптирована больше под C и C++, чем под ассемблер,
поэтому с определенными сложностями придется столкнуться. Но это не значит, что
написать драйвер на ассемблере невозможно. Некоторые вон на BASIC драйверы
ухитряются писать, и еще на Delphi...
5
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2017, 19:12
Помогаю со студенческими работами здесь

lg(x) на ассемблере
Здравствуйте. Подскажите пожалуйста как реализовать функцию десятичного логарифма на ассемблере. С математикой все понятно, но как это...

For на ассемблере
for(int i=0;i<=2;i++) { CAN_Frame = Tail; // записываем в CAN_Frame 3 байта Tail tm = i; }//for i tm = tm...

If/else в ассемблере
День добрый, есть небольшой вопрос. Сегодня решил поучиться работать с if/else в асм, но что-то, вот, не получилось... Вот код: ...

if else в ассемблере
Пытаюсь освоить условные переходы в ассемблер и не понимаю как их реализовать Например как записать данное условие в ассемблере? ...

На ассемблере
Дан массив из 14 случайных двухбайтных чисел на интервале . Необходимо выполнить сортировку чисел не по возрастанию . Найти значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru