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

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

20.01.2017, 22:51. Показов 7971. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru