Тема: Драйвер - як його написати та і що це?
Драйвер - як його написати та і що це?
Напишіть будьласка, як написати свого драйвера? Який компілятор потрібний? Як це взагалі робиться, як драйвера пишуть?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Системне програмування → Драйвер - як його написати та і що це?
Для відправлення відповіді ви повинні увійти або зареєструватися
Драйвер - як його написати та і що це?
Напишіть будьласка, як написати свого драйвера? Який компілятор потрібний? Як це взагалі робиться, як драйвера пишуть?
У рамках однієї теми, ось так, з наскоку, без розуміння вами об'єктної моделі ядра і архітектури цільового заліза?
Може спочатку ознайомитесь з літературою та WinDDK:
М. Русинович, Д. Соломон "Внутрішній устрій Microsoft Windows: Windows Server 2003, Windows XP, Windows 2000 Майстер-клас"
Дж. Рiхтер "Створення ефективних WIN32-додатків з урахуванням специфіки 64-розрядної версії ОС Windows"
Пакет системних утиліт від Русиновича
Програмування драйверів Windows / Солдатов
raxp, цікаво, що ТС про віндовс нічого не казав, а Ви йому все про вінду, хіба під інші системи драйвери не потрібні?
Це тому, що у TC всi теми навколо Windows, тому чутка телепатії + чутка статистики = соцiальна iнженерiя )
Спочатку потрібно розібратися як функціонує вінда, та що таке х86.
Спасибі величезне!! Так приємно отримувати відповіді!
Повний залік книги Солдатова! Читається легко, зрозуміло, ну аж прям як художньяа книга!
Використання також повноцінна кльова книга, в неї дуже дуже багато усього!
Але читається вона порівняно важко, я аж не можу. Я почав читати її першої, і де то на семидесятоїиі
сторінці забивши на це .. Ну втомився я, і зрозумів я що її якщо читати то потрібно читати раз, потім другий, третій,
коли вже краще зрозуміло терміни, я зрозумів, що ненавмисно пропускаю 2/3 повз через тяжкость матеріалу. Голова обважніла.
Ще мінус, що немає її у вигляді іншому, крім діджей. Ну не люблю я його!
Відношуся як до крайнього збочення. І з ним же не можна працювати!
Я взагалі маю свої методи, як саме мені легко і зручно. Я в таких випадках коли книга важка відкриваю
її у нотепаді, звичнє, відмінне середовище. Будь-який термін я ураз виділяю по - усьому тексту
вмить знаходжу його по - всіх згадках, і так само легко і в інших поруч відкритих
документах також. Повірте, як це зручно! Так в рази легше вчити щось, що б там не було.
А це, ось з діджей вже так не попрацюєш! Ну добре..
До речі, найповніший залік raxp!!! Моя вдячність!!
Доброго дня! Я бажаю таки скомпилювати драйвер, але не зовсім розумію як.
У книзі Солдатова написанє "Компиляция и сборка драйвера утилитой Build пакета DDK
В том варианте, как поставляется пакет DDK, весьма просто использовать компилятор и редактор связей этого пакета. Для этого следует выбрать в меню запуска программ Пуск — Программы — ... запуск соответствующей среды (по ряду причин наиболее предпочтителен выбор среды Window 2000, checked или free), в результате чего появится консольное окно, для которого уже (автоматически) будут должным образом установлены переменные окружения. В том случае, если у разработчика имеются файлы makefile, sources (описывающие процесс сборки данного конкретного драйвера), а пакет DDK установлен корректно, то необходимо лишь перейти в рабочую директорию проекта командой cd (для драйвера, рассматриваемого в следующей главе, это — директория C:\Example) и ввести команду build (см. рисунок 2.1). Разумеется, что в случае ошибок компиляции или сборки вывод будет содержать и их диагностику.
" . Так от в мене в меню Пуск-Все программі нємае ніякого значка або що, щоб воно чімось нагадувало утилитой Build пакета DDK.
Якщо я щось тільки чогось не плутаю, або ж не бачу прям перед собою.
Я власне і не пам'ятаю вже толком що я там собі за програми ставив.
Папка звється C:\DDKs-2600.1106-3790-6000-7600.1-8.0-8.1.7z і я перетягнув її у корневу директорію.
Хвилин двадцать (навить більше) я змагався написати БАТ-файла, шось писав писав у нотепаді.
Взагалі не розумію - які програми запускати в ньому першими, якщо їх запускати не одну,
скільки і в якій послідовності, може передавати ще й якісь параметри,, або що?
Бо в мене якось ще в голові не вляглося, все це, яки потрібні драйвєрові функциї та структури,
які допоміжні програми бувають та й усе. Я ще погано роздививсь і той самий DDKs, я ще в ньому
блукаю періодично щось зустрічаючи цікаве, і ще нє розгледів його до ладу.
Та і чімось якось скомпилювати, хоч чім.
Ну і може я щось погано почитав, звичайно, тоді тикнить
менє будь ласка ,,носом,,. Я ж міг пропустити, не помітити, ненадати значення взагалі...
А ще я додатково завантажив ось нещодавна GRMWDK_EN_7600_1.ISO .
Як бачітє, це файл в не зовсім звичайному розширенні, яке я коли і стикався то забув.
І а ось що ж пише майкрософт про оцей свій продукт, електронний перекладач - Цей випуск набору Windows Driver Kit доступний тільки в якості зображення для DVD ISO. Він рекомендується завантажити образ диска, а потім записати DVD. Ваша машина повинна бути встановлена горіння DVD програмне забезпечення.
Аось на яку цікавинку я натрапив на сайті -
Що таке розширення iso, чим його можна відкрити
На зорі комп'ютерної ери не існувало поняття «файл», не потрібно було вигадувати для нього назву і привласнювати розширення. Сьогодні абсолютно інша історія. Файлові системи вимагають чіткої впорядкованості, строгості зберігання інформації. Тому у кожного файлу є свій ідентифікатор, за яким його можна відкрити тією чи іншою програмою.
В ієрархічній структурі сучасної операційної системи все знаходиться строго на своїх місцях. Якщо користувач виявляє файл з розширенням * .exe, то розуміє, що це програма або утиліта. * .doc потрібно відкривати в Word, а для * .html розроблені браузери і спеціальні редактори. Однак іноді трапляються й інші розширення, з якими не так просто розібратися. І одним з таких порівняно рідкісних гостей на ПК є * .iso
Рідкісний гість * .iso
Відносно недавно вінчестери ПК були настільки малі, що рідкісний користувач зберігав на них великі файли. Швидше, це було скупчення музики, книг і / або картинок. Як тільки великі жорсткі диски стали доступними, на них почали записувати фільми та ігри. Останні зазвичай йшли в форматі * .iso, * .mdf або * .vcd і представляли собою «образи» звичайних CD або DVD дисків.
В 90-х роках минулого століття ще не думали про те, що на вінчестерах зможуть уміститися цілі колекції фільмів або ігор.
Робилося це для того, щоб зберегти на вінчестері вподобану гру або програму, що не запускалася без підтримки CD-диска. Тоді за допомогою спеціальних програм створювався «образ» і диск можна було спокійно повернути одному. Саме тоді формат * .iso здобув популярність. Однак для деяких людей, що зіткнулися з ним вперше, було складно відкрити цей дивний файл.
Сезам - відкрийся!
Програм, що розуміють формат * .iso, кілька десятків. Але всі вони працюють за схожим принципом, тому досить розглянути найпоширеніші з них, щоб отримати повну інформацію:
Принцип дії програми-емулятора полягає в тому, щоб імітувати роботу звичайного CD / DVD-ROM`a на програмному рівні.
- DAEMON tools - класична програма, відома ще з двохтисячного року, коли вийшла перша її версія. Здатна відкривати безліч форматів «образів» дисків, а також створювати їх. Проект розвивається донині. Остання версія 2.2. Тип ліцензії: Free (для особистого користування)
- Alcohol 120% - інша програма - емулятор дисків. Також відкриває багато форматів «образів» і створює їх. Проект в розвитку. Остання версія 2.0.2.5830. Тип ліцензії: Shareware.
- UltraISO - менш відома програма для тих же цілей. З її допомогою можна відкривати до 30 форматів «образів», створювати їх і робити запис на CD. Проект активно розвивається. Остання версія 9.6.1.3016. Тип ліцензії: Shareware. Є безкоштовна версія, але вона працює з «образами» не більше 300 Мб.
Розмір «образів» може бути різним, але найпоширенішими варіантами є 700 Мб і 1,4 Гб. З поширенням DVD-дисків з'явилися «образи» на 4 Гб і більше. Однак якщо ви знайомі з однією з трьох перерахованих вище програм, проблем в роботі з * .iso не буде.
%%%%%%%%%%%%
Я ж таки не можу рішитися - яку ж прогу мені завантажити, як же із цім розширенням бути і працювати. Як же ш воно краще.
Точніше кажучи я не зрозумів - треба мені одна з цих прог або не треба і як мені бути! ??
А є якийсь алгоритм, щоб перетворити файли образу в звичайний вид програми?
Дмитро-Чебурашка
Зараз ISO уміє будь-який архіватор відкривати як архів.
...в total навiть плагiн.
NTSTATUS Create_File_IRPprocessing(IN PDEVICE_OBJECT fdo,IN PIRP Irp)
{
PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp);
// Задаем печать отладочных сообщений - если сборка отладочная
#if DBG
DbgPrint("-Example- Create File is %ws",
&(IrpStack->FileObject->FileName.Buffer));
#endif
return CompleteIrp(Irp,STATUS_SUCCESS,0); // Успешное завершение
}
Ось це ось ділянка коду. А саме IrpStack->FileObject->FileName.Buffer, ось що це? Взагалі ніяк не видно, що це!
Шукаяю як завгодно в гуглі -нема, тоб то е різні коди у сховищах, але ніяк не пояснення що це!
У коді з'являється прямо тут і так, і тільки один раз. Тобто ж ніяких передумов що це за File Object не є і що це взагалі за
FileName.Buffer?
А тут помилка така ось warning 6067 : Parameter '2' in call to 'DbgPrint' must be the address of the string
File path: c:\example\init.cpp
Function: Create_File_IRPprocessing
Line: 243
--------------------------------------------------------------------------------
1 яю/
201
238
--------------------------------------------------------------------------------
PREfast analysis path begins
243
--------------------------------------------------------------------------------
244
248
448
648
--------------------------------------------------------------------------------
Error
The following error occurred attempting to load the file, "":
--------------------------------------------------------------------------------
If the file can be located in another folder, enter the path name of the folder here and click the Retry button:
--------------------------------------------------------------------------------
Unknown line number
PREfast was unable to determine the line number for this warning.
Model File Error
A probable error was encountered in the model file. A few source file errors also can cause such errors.
Ах то це Варнінг .. Ну а хоча б! Гаразд завтра розберемося...
Ось я хочу з консолі, яка ось тут з'являється при коіпіляції, їз неї виводити все у текстовий документ !! Так у ломи переписувати ..
Буде і переводити зручніше, і показувати!
Доброго вечора всім!! Що я там писав раніше? Загалом дякую всім!
Я в пуск знаходжу ярлик віндовс драйвер кит --буилд энвіронмєнт --віндХР....
Коротше запускаю.... Список помилок. Ось я не знаю, код же з книгі. Може код нє такий, може я нє такий,чі може ще там якісь налаштування особливі потрібні, я не розумію...
Будь ласка пояснить усе!! Бо я оцє не зміркую зовсім...
Лог приєдную. А ось і файл коду. Я хоч і не думаю що справа в ньому, проте ж викладу його. Він надпотужно розбавлений різною фігнєю, коментарями, їх можна не читати. Навить можна прибрати.. Алє код видно.
Розархіватор 7z. Гадки не маю, чі потрібен він в темі?
Будь ласка подивіться!
Я не знаю, як правильно використовувати extern "C"?
Ні ні! Спочатку напишіть мені будь ласка як в нотепаді видалити всі коментарі одразу з файлу С ++, одразу всі!
Ну там хитрий і правильний зручний метод ...
Хай йому!! Щоб не гаяти часу я і руками щас видалю однак жє питання не зіймаю!
У вас в init.cpp не реалізована функція Close_HandleIRPprocessing. Оголошення є, а тіла функції нема.
Для відправлення відповіді ви повинні увійти або зареєструватися