Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите пожалуйста советом  (Прочитано 11800 раз)
0 Пользователей и 1 Гость смотрят эту тему.
maniac85
Гость
« : 01-02-2008 22:25 » 

Помогите пожалуйста советом, я только начал изучать программирование драйверов(до этого был читый API(на си), аплекухи всякие), хотел бы посоветоваться как построить обучение(в какой последовательности что изучать, может какие советы) Здесь была моя ладья...

Вот купил три книги:
Цитата
1.Валерия Коммисарова. "Программирование драйверов для Windows"
(почитать для начала, плюс там есть про новую технологию - WDF, книга чисто для чайников)

2.Солдатов В.П. "Программирование драйверов Windows"(3-издание, дополненное)
(одни говорят хорошая книжка, другие - слизана с DDK, я посмотрел, вроде хорошая книга, много чего есть интерестного, короче купил, вроде доволен, хорошая книжка)

3.Walter Oney. Programming the Microsoft Windows Driver Model(с переводом на русский, 2-издание)
(человек пишет - настоящий клад для тех кто решил серьезно заниматься программирование драйверов под Windows. От Вас потребуется недюжие усилия, чтобы "переварить" эту книгу - уж больно тематика тяжкая)

Вывод? Самая лучшая книга - Уолтера Они Внимание! Говорит и показывает..., но походу она трудная для начала, Солдатов где то посередке, и для чайников - Комиссарова. Т.е вначале почитаю Комисарову, будет какое то представление о драйверах, устройстве Windows и т.п, потом хорошо возьмусь за Солдатова, краем глаза смотря чтот там пишет Уолтер, а потом проштудировать глубокоуважаемого Уолтера Они? или лучше после Комиссаровой сразу Уолтера взять(наскоко он сложно излагает?), а Солдатова использовать как справочник?
Что скажите? Правильно построить обучение, половина успеха Улыбаюсь
Про сложность изложения материала, в начале всегда легко идет, а потом начинаются трудности, просто нехочется допустим начать читать Уолтера и кинуть книгу посередине Жаль, лучше уж проштудировать что до этого а потом хорошенько взятся за него, по мойму так... Здесь была моя ладья...

в общем, какие мысли будут, заранее спасибо за советы! Ага
Записан
maniac85
Гость
« Ответ #1 : 02-02-2008 13:15 » 

16 раз прочитано, подскажите пожалуйста хоть что небудь:(
я смотрел на форуме но толком ответ ненашел, это ж нетрудно написать 2 строки, у вас большой опыт, а я токо начинаю, хотелось бы сразу идти по правильному пути ка это возможно.
Спасибо.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 02-02-2008 13:19 » 

maniac85, спецы отдыхают, жди понедельника Жаль
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
maniac85
Гость
« Ответ #3 : 02-02-2008 13:51 » 

Улыбаюсь
подождемс, главное чоб не проигнорировали;)
Хорошо отдохнуть:)
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 02-02-2008 18:07 » 

maniac85, не расстраивайся. Вопрос нормально сформулирован, написано тоже не "а лишь бы как". Так что действительно надо подождать спецов. Я баловался с дровами по необходимости, но тебе другой уровень нужен.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
maniac85
Гость
« Ответ #5 : 02-02-2008 20:42 » 

 Ага
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 04-02-2008 11:36 » 

еще есть книга Сорокиной, Программирование драйверов и систем безопасности.

а с чего начать... задумался. честно говоря, подробно читал только книгу Соломона-Руссиновича, Внутреннее устройство Windows 2000... - очень интересные тонкости работы системы были. хотя по ней драйвера программировать не научишься.
что до остального:

Солдатов. безобразная книжка. сумбур полный. (Кстати он там Руссиновича тоже упоминает).
никакой последовательности изложения. зато - много примеров и комментарии кода. это плюс. все куски кода расписаны по частям, но боюсь с первого продчтения в голове общей картины не собератся.

Сорокина. по делу только 2-я глава - описание структуры виней. очень поверхносно, но вобще говоря, для начала мельком пролистать можно. но обязательно держать в голове, что только мельком! для получения первого впечатления - думаю подойдет. но одной этой книжки - точно не хватит. 100%.

Комисарова под рукой нет, - совсем не помню о чем там речь идет...

и наконец Вальтер Они.
если он у вас есть - остальные перечисленные книги - в печку) у него только один "недостаток". он расчитан на "правильного" читателя, который последовательно! и внимательно! прочитатет все до каждой точки, паралельно разбираясь в его же примерах и залезая в DDK на каждую функцию.
после него - (из того, что есть на русском) читаем Руссиновича. это когда собственный опыт будет.

Если все таки будут сложности с Вальтером Они...
мельком пролистайте сорокину, или солдатова, или комисарова (хотя я и не помню что там было). и возврашайтесь к Они.
и помните, что без практики - все это подчти бесполезное чтиво.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
maniac85
Гость
« Ответ #7 : 04-02-2008 14:34 » 

Спасибо огромное за совет! Улыбаюсь
Немного разобрался, хотелось бы поделиться мыслями, если можно
(буду рад если каму помогу в таком же вопросе)

Получилось вроде руководства для начинающих kernel-программитов :Улыбаюсь
(в дальнейшем, если будет необходимо, буду вносить поправки прямо сюда)

Начнёмс...

По поводу книг:

ПЕРВОЕ:
не тратьте деньги на книгу:
Цитата
Валерия Коммисарова - Программирование драйверов для Windows
я в шоке от нее, пишет явно ребенок, ужас полный, если неверите можете скачать электронную версию, но не покупайте, не тратьте денег!

ВТОРОЕ:
Для начала на мой взгляд стоит почитать две книги:
Цитата
Рихтер Дж. - Создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows
Харт Дж.М. - Системное программирование в среде Windows
(это у учетом того что человек имеет представление о  WinAPI, т.е были изучены книги Финогенова, Румянцева, Петцзольда)

ТРЕТЬЕ:
Еще хорошо было б почитать книги про внутреннее устройство Windows:
Цитата
М.Руссинович, Д.Соломон - Внутреннее устройство Microsoft Windows: Windows Server 2003
Свен Шрайбер  - Недокументированные возможности Windows 2000

Но тут я могу ошибаться, Ochkarik, говорит лучше потом, когда будет собственный опытв написании драйверов, пожалуй соглашусь с ним! Как говориться, старших нужно слушать!:)

ЧЕТВЕРТОЕ:
ВОТ, и теперь можно переходить непосредственно к написанию драйверов:
Для начала:
Цитата
Солдатов В.П. - Программирование драйверов Windows
и Сорокина С. - Программирование драйверов и систем безопасности
(почитать/пролистать - нужно только иметь иметь общее представление(минимум),
настроить там среду разработки(о ней ниже) и все такое)

Далее ТЩАТЕЛЬНО изучаем
Цитата
Уолтер Они -  Программирование Microsoft Windows Driver Model
, у меня
бумажаная версия с переводом на русский, 2-издание Отлично, всем советую купить на будущие!!
(прочел страниц 60, приклоняюсь перед автором, настоящий шедевр:), НО по моему он для людей уже хорошо знающих основы, поэтому надо изучить вышесказанное)

Что дальше делать, думую потом будет ясно:)

//==================================================================================================

По поводу среды разработки и тд и тп:

Я так понял нужно поставить виртуальную машину (WMware, чтобы не запортить вашу Виндовс и железо), там настроить виндовс что бы работать с нулевым уровнем Windows(вроде делается батник и запускается когда винда токо загрузилась + еще что то прописывают в boot.ini с этим я еще не разобрался)

Все система готова для программирования драйверов Меня одолевают смутные сомнения

Теперь о инструментах програмиста:

DDK, ставить на виртуалку, т.к там множество утилит которые нам понадобятся

Далее если надо WinDGB присоединить к виртуальной машине (WinDBG + WMware)
Вот мануал со скринами:
Driver Debugging with WinDbg and VMWare
http://silverstr.ufies.org/lotr0/windbg-vmware.html(англ. яз)
(или если надо, я опишу как это сделать в дальнейшем)

Код пишем в Visual Studio, а компилим в утилите BUILD из состава DDK
(можно конечно скрестить VC++ 6.0 и DDK но я незнаю как)

в папке с исходником драйвера создаем следующие файлы MAKEFILE, SOURCES и make.bat

SOURCES:
Цитата
  TARGETNAME=BlackNet
  TARGETPATH=obj
  TARGETTYPE=DRIVER
  C_DEFINES=$(C_DEFINES)
  X86_CPU_OPTIMIZATION=O2
  INCLUDES=D:\soft\WINDDK\2600\inc
  SOURCES=BlackNet.c
  RELEASETYPE=DDK

MAKEFILE:
Цитата
  !INCLUDE $(NTMAKEENV)\makefile.def


Делаем батник:

make.bat:
Цитата
%SystemRoot%\system32\cmd.exe /c "cd D:\soft\WINDDK\2600\bin\&&setenv.bat D:\soft\WINDDK\2600\&&cd D:\soft\WINDDK\2600\src\BlackNet_att\&&build -ceZ&&pause"

Теперь можно компилить свой драйвер запуском make.bat.

(Не забудьте поменять пути в батнике и файле sources!!!!!!!!!!!!!!!!!)

Чтобы проверить все выше сказанное, просой текст драйвера на .с:
Цитата
#include <ntddk.h>

VOID DriverUnload(IN PDRIVER_OBJECT DriverObject)
{
    DbgPrint("Driver unloaded");

    return;
}

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,
                     IN PUNICODE_STRING RegistryPath)
{
    DbgPrint("Driver loaded");
 
    DriverObject->DriverUnload = DriverUnload;

    return STATUS_SUCCESS;
}

+ на http://saratovenergo.ru/xp_and_2000.zip есть пара шаблонов, может пригодиться

Надеюсь данный флуд каму то пригодился Меня одолевают смутные сомнения
Да и что здесь написано неправильно я исправлю! Да-да

Далее, если можно интерисуют ответы/ссылки на:
1. Все таки как надо настроить Windows и VMware?(что куда ставить)
2. Как скрестить VC++ 6.0/2005 и DDK

Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 04-02-2008 15:01 » 

скрестить VS 6/2003 (VS2005 мне пока скрестить не удалось - новый компилятор ругается) можно и даже нужно!
как это сделать - я выкладывал настройки 6-й студии для компиляции драйверов (тут ищите).
(поиск по "Помогите с настройкой проекта Visual C++ 6.0")
единственное что - может быть придется указать PATH к папке DDK3790.1830\bin\x86\ раньше чем Microsoft Visual Studio 8\VC\bin\

второй вариант - на 6 студию ставится NuMega Driver Studia v3.2 (там есть великолепный визард для создания рыб драйверов на голом Си. НО! упаси вас бог использовать чьи то классы!) туда же входит лучший отладчик всех времен и народов SoftIce. собственно я оттуда и брал эти настройки.
ОДНАКО!
NuMega прекратила выпуск как DriverStudia, так и SoftIce. поэтому подружить старый отладчик на новом железе не удастся.
тем не менее, визард там просто изумительный. по крайней мере, в свое время, он мне очень помог разобраться как 1394-FireWire так и с USB.
До этого пытался разобраться в SetEnv.bat - но 70кБайт дефенишенов и все условия я не осилил))))

PS WmWare - не использовал. но наверняка в нете должно все лежать)
« Последнее редактирование: 04-02-2008 15:14 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
maniac85
Гость
« Ответ #9 : 04-02-2008 22:25 » 

будем смотреть, спасибо:)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines