Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Создание проекта для написания дровины, ручками?
Посл.ответ Сообщение

Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 21 апреля 2006 17:30 · Поправил: theCollision
· Личное сообщение · #1

Целую неделю искал простоту создания проекта для написания драйвера и не нашел.

что значит для меня простота, поясню на примере создания консольного приложения с использованияем VC++ v6.0:
1. Open("total commander.exe") )
2. shif+F4, NameFile: - 1.cpp
3. press "enter"
4. Save file. Close file
5. выделяю файл и щелкаю на нем "enter", т.к. расширения "cpp" ассоцированы с VC++ 6.0 то открывается этот продукт
6. Пишу код
7 Жму Ctrl+F7
8. Ctrl+F5
Наблюдаю работу приложения

Просто? Вот и я говорю, что чем проще тем лучше!!!

Как же мне научиться создовать проект, (желательно ручками) где в driver.cpp,driver.h и на этом все, после создать проект подобно п.7(выше) и наблюдать результат?

Кто как делает?

Имею:
WDFv10.iso,Driver Studio 3.2, WinXP sp2, Visual C++ 6.0

Замачание:
Нужна именно Visual C++ 6.0!!! Про .NET я и в Солдатове могу почитать

зы:
Пока я настроил VC++ 6.0, в нем после установки Driver Studio 3.2 появилось "Driver Studio" -> Driver Wizard, но он такой "проектище" создает, что не то что мне новичку, виртуозу то поди трудно разобраться.

-----
My love is very cool girl.





Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 21 апреля 2006 17:36
· Личное сообщение · #2

что может быть проще make файла и батника?



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 21 апреля 2006 20:37
· Личное сообщение · #3

DrGolova
Если бы я знал еще, что да как!
Солдатова только начал читать, у него минус: - Не успев выложить фундамент, строит стены.

Я только начал этим миром интересоваться, читаю Руссиновича, но в ней только теория, но зато какая. В Шрайбере, для тех кто уже что-то сделал, в упаковщиках на www.wasm.ru опять же, нужен опыт. А я начинающий в мире уровня ядра и пока мне надо по легче.

Прошу пояснить или пролить свет на данную область

-----
My love is very cool girl.




Ранг: 17.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 08 мая 2006 00:20 · Поправил: Sax0n
· Личное сообщение · #4

чот в "имею" DDK не указан
я этим вопросом тож нетак давно интересовался.
Пришел вот к чему:
1. Ставится VMWare. На неё винда 2k/xp/2k3
2. Ставится DDK.
3. Ставится VC6
4. Ставится DS 3.2
5. Создается проект и настраивается (выбери себе подходящий)
===================================================================
VISUAL STUDIO 6
C/C++ Compiler:

/nologo /Gz /ML /W3 /Zi /Oi /Gy /I "." /I "$(TARGET_INC_PATH)" /I "$(CRT_INC_PATH)" /I "$(DDK_INC_PATH)" /I "$(WDM_INC_PATH)" /I "..\TCRConfig\VpnComm" /FI"warning.h" /D _X86_=1 /D i386=1 /D "STD_CALL" /D CONDITION_HANDLING=1 /D NT_UP=1 /D NT_INST=0 /D WIN32=100 /D _NT1X_=100 /D WINNT=1 /D _WIN32_WINNT=0x0400 /D WIN32_LEAN_AND_MEAN=1 /D DEVL=1 /D DBG=1 /D FPO=0 /D "NDIS_MINIPORT_DRIVER" /D NDIS_WDM=1 /D NDIS40_MINIPORT=1 /D NDIS40=1 /FR".\objchk\i386/" /Fo".\objchk\i386/" /Fd".\objchk\i386\ipsecvpn.pdb" /Zel -cbstring /GF /c

Linker:

ntoskrnl.lib hal.lib wmilib.lib ndis.lib sagos32.lib /nologo /base:"0x10000" /version:5.0 /stack:0x40000,0x1000 /entry:"DriverEntry" /incremental:no /pdb:".\objchk\i386/ipsecvpn.pdb" /machine:IX86 /nodefaultlib /out:".\objchk\i386\ipsecvpn.sys" /libpath:"$(TARGET_LIB_PATH)" /driver /IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096,4210 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /SECTION:INIT,d /MERGE:.rdata=.text /FULLBUILD /RELEASE /OPT:REF /OPT:ICF /align:0x80 /osversion:5.00 /subsystem:native,1.10 /debug:FULL

Дествия после сборки (PostBuildStep)
E:\PROGRA~1\COMPUW~1\SOFTIC~1\SoftICE\nmsym.exe /translate:source,package,always .\objchk\i386\ipsecvpn.sys


Релиз XP2600:*************************************************************** **********
Компилятор:
/nologo /G6 /Gz /ML /W3 /Zi /Oi /X /I "$(BASEDIR_XP2600)\inc\wxp" /I "$(BASEDIR_XP2600)\inc\ddk\wxp" /I "$(BASEDIR_XP2600)\inc\crt" /D DBG=1 /D "_DEBUG" /D "_WINDOWS_" /D "WIN32" /D _X86_=1 /D i386=1 /D "STD_CALL" /D CONDITION_HANDLING=1 /D NT_UP=1 /D NT_INST=0 /D WIN32=100 /D _NT1X_=100 /D WINNT=1 /D _WIN32_WINNT=0x0400 /D _WIN32_IE=0x0400 /D WIN32_LEAN_AND_MEAN=1 /D DEVL=1 /D FPO=0 /D _DLL=1 /D "DRIVER" /D "_WIN2K_COMPAT_SLIST_USAGE" /FAs /Fa"Debug_WinXP2600/" /FR"Debug_WinXP2600/" /Fo"Debug_WinXP2600/" /Fd"Debug_WinXP2600/" /FD /Zel /QIfdiv- /QIf /QI0f /GF -cbstring /c

BASEDIR_XP2600 = путь к DDK директории.

Линкер:
ntoskrnl.lib hal.lib wmilib.lib /nologo /base:"0x10000" /version:2.2 /stack:0x40000,0x1000 /entry:"DriverEntry@8" /incremental:no /pdb:"Debug_WinXP2600/имя.pdb" /map:"Debug_WinXP2600/имя.map" /machine:IX86 /nodefaultlib /out:"Debug_WINXP2600\имя.sys" /libpath:"$(BASEDIR_XP2600)\lib\wxp\i386" /debug:FULL /subsystem:native,1.10 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /MERGE:.rdata=.text /SECTION:INIT,d /driver /FULLBUILD /RELEASE /OPT:REF /OPT:ICF /align:0x80 /osversion:5.00 /IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096

Дебаг XP2600:*************************************************************** **********
Компилятор:
/nologo /G6 /Gz /ML /W3 /Zi /Oi /X /I "$(DDKPATH)\inc\wxp" /I "$(DDKPATH)\inc\ddk\wxp" /I "$(DDKPATH)\inc\crt" /D DBG=1 /D "_DEBUG" /D "_WINDOWS_" /D "WIN32" /D _X86_=1 /D i386=1 /D "STD_CALL" /D CONDITION_HANDLING=1 /D NT_UP=1 /D NT_INST=0 /D WIN32=100 /D _NT1X_=100 /D WINNT=1 /D _WIN32_WINNT=0x0400 /D _WIN32_IE=0x0400 /D WIN32_LEAN_AND_MEAN=1 /D DEVL=1 /D FPO=0 /D _DLL=1 /D "DRIVER" /D "_WIN2K_COMPAT_SLIST_USAGE" /FAs /Fa"Debug_WinXP2600/" /FR"Debug_WinXP2600/" /Fo"Debug_WinXP2600/" /Fd"Debug_WinXP2600/" /FD /Zel /QIfdiv- /QIf /QI0f /GF -cbstring /c

Линкер:
ntoskrnl.lib hal.lib wmilib.lib /nologo /base:"0x10000" /version:2.2 /stack:0x40000,0x1000 /entry:"DriverEntry@8" /incremental:no /pdb:"Debug_WinXP2600/driver.pdb" /map:"Debug_WinXP2600/driver.map" /machine:IX86 /nodefaultlib /out:"Debug_WINXP2600\driver.sys" /libpath:"$(DDKPATH)\lib\wxp\i386" /debug:FULL /subsystem:native,1.10 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /MERGE:.rdata=.text /SECTION:INIT,d /driver /FULLBUILD /RELEASE /OPT:REF /OPT:ICF /align:0x80 /osversion:5.00 /IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096

Win2000 релиз***************************************************************** ********
Компилятор:
/nologo /G6 /Gz /ML /W3 /O2 /I "$(BASEDIR_NT5)\inc" /I "$(BASEDIR_NT5)\inc\ddk" /I "$(BASEDIR_NT5)\inc\ddk\wdm" /D "NDEBUG" /D "_WINDOWS_" /D "WIN32" /D "_MBCS" /D _X86_=1 /D i386=1 /D "STD_CALL" /D CONDITION_HANDLING=1 /D NT_UP=1 /D NT_INST=0 /D WIN32=100 /D _NT1X_=100 /D WINNT=1 /D _WIN32_WINNT=0x0500 /D _WIN32_IE=0x0400 /D WIN32_LEAN_AND_MEAN=1 /D DEVL=1 /D FPO=0 /D _DLL=1 /D "DRIVER" /D "_IDWBUILD" /D "_NT2000_SYS_DRIVER_" /FAs /Fa"Release_Win2000/" /FR"Release_Win2000/" /Fo"Debug_Win2000/" /Fd"Debug_Win2000/" /FD /Zel /QIfdiv- /QIf /QI0f /GF -cbstring /c

Линкер:
ntoskrnl.lib hal.lib kernel32.lib /nologo /base:"0x10000" /version:2.2 /entry:"DriverEntry@8" /subsystem:windows /pdb:none /map:"Release_Win2000/имя.map" /machine:I386 /nodefaultlib /out:"Release_WIN2000\имя.sys" /libpath:"$(BASEDIR_NT5)\libfre\i386\" -MERGE:_PAGE=PAGE -MERGE:_TEXT=.text -SECTION:INIT,d /OPT:NOREF -FORCE:MULTIPLE -FULLBUILD -MERGE:.rdata=.text -align:0x20 -osversion:5.00 -subsystem:native,1.10 -driver:WDM -IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096 /RELEASE

Дебаг:**************************************************************** *********
Компилятор:
/nologo /G6 /Gz /ML /W3 /Zi /Oi /I "$(BASEDIR_NT5)\inc" /I "$(BASEDIR_NT5)\inc\ddk" /I "$(BASEDIR_NT5)\inc\ddk\wdm" /D "_DEBUG" /D DBG=1 /D "_WINDOWS_" /D "WIN32" /D "_MBCS" /D _X86_=1 /D i386=1 /D "STD_CALL" /D CONDITION_HANDLING=1 /D NT_UP=1 /D NT_INST=0 /D WIN32=100 /D _NT1X_=100 /D WINNT=1 /D _WIN32_WINNT=0x0500 /D _WIN32_IE=0x0400 /D WIN32_LEAN_AND_MEAN=1 /D DEVL=1 /D FPO=0 /D _DLL=1 /D "DRIVER" /D "_IDWBUILD" /D "_NT2000_SYS_DRIVER_" /FAs /Fa"Debug_Win2000/" /FR"Debug_Win2000/" /Fo"Debug_Win2000/" /Fd"Debug_Win2000/" /FD /Zel /QIfdiv- /QIf /QI0f /GF -cbstring /c

Линкер:
ntoskrnl.lib hal.lib kernel32.lib /nologo /base:"0x10000" /version:2.2 /entry:"DriverEntry@8" /subsystem:windows /incremental:no /pdb:"Debug_Win2000/имя.pdb" /map:"Debug_Win2000/имя.map" /debug /machine:I386 /nodefaultlib /out:"Debug_WIN2000\имя.sys" /libpath:"$(BASEDIR_NT5)\libfre\i386\" -MERGE:_PAGE=PAGE -MERGE:_TEXT=.text -SECTION:INIT,d /OPT:NOREF -FORCE:MULTIPLE -FULLBUILD -MERGE:.rdata=.text -align:0x20 -osversion:5.00 -subsystem:native,1.10 /driver:WDM -debug:FULL -IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096


но после я задал себе вопрос - нафига нужна студия 6? Веть структуры драйверные она не парсит, да и отлаживать драйвер в ней нельзя. После чего послал ее от драйверов подальше и пользуюсь .bat Ту точно все проще некуда. Есть один .c и куча хедеров. компилица это одним кликом. затем kmdmanager`ом прописываю драйвер и запускаю. потом останавливаю. Отлаживаю софтайсом. Использую bpint 3 и конструкции вида
#ifdef DEBUG
__asm{int 3}
#endif

Вот вроде и все.




Ранг: 80.5 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 08 мая 2006 00:54
· Личное сообщение · #5

theCollision пишет:
Если бы я знал еще, что да как!

$Evil`s_Interrupt, это просто ;)
В аттаче каркас driver.c, driver.h с MAKEFILE и SOURCES под WinDDK (хрюшевый)



9da5_08.05.2006_CRACKLAB.rU.tgz - xp.7z

-----
ring 0




Ранг: 12.9 (новичок)
Активность: 0=0
Статус: Участник

Создано: 09 мая 2006 00:32 · Поправил: Python
· Личное сообщение · #6

У меня два инструмента: DDK и Far.

Начинал учиться писать драйвера тут: club.shelek.com/view.php?id=19

Удачи!




Ранг: 251.8 (наставник), 17thx
Активность: 0.120
Статус: Участник
Seeker

Создано: 09 мая 2006 01:58
· Личное сообщение · #7

DrGolova пишет:
что может быть проще make файла и батника?

tpt (http://tim-sobolev.narod.ru/files/Tpt.rar) и батник

-----
DREAMS CALL US





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 09 мая 2006 14:38
· Личное сообщение · #8

Значит так, AFAIK, есть 3 способа компилить дрова:

a) используя makefile, sources и команду build - проще всего настроить, самый стабильный environment, но весь вывод в консоль

b) вызвать этот build из редактора, который парсит CL output (ie error messages) - просто, эффектно, стабильно, но нет проекта (дерева файлов)

c) создать новый DLL project в VC6, VS2003 or VS2005 и прописать все compiler and linker options из лога который создаёт build - непросто, но есть file tree, completion, etc.



Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 10 мая 2006 05:36
· Личное сообщение · #9

Можно ещё глянуть
www.RapidDriver.com
Да и по всему сайту прошвырнуться для пользы дела
www.entechtaiwan.com/

есть ещё
www.jungo.com/windriver.html
www.jungo.com/windriver_temp_ru.html этот что-то не фурычит
ну или тут WinDriver 8.01
enfull.com/soften/1478.htm




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 10 мая 2006 06:47
· Личное сообщение · #10

Ratinsh пишет:
www.jungo.com/windriver.html

Ну тогда можно упомянуть NuMega/Compuware DriverWorks и DriverNetworks - там object oriented lib и wizard который тебе сделает .dsp/.vcproj


 eXeL@B —› Программирование —› Создание проекта для написания дровины, ручками?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати