Спасибо огромное за совет!
Немного разобрался, хотелось бы поделиться мыслями, если можно
(буду рад если каму помогу в таком же вопросе)
Получилось вроде руководства для начинающих 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.batSOURCES: 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