по поводу компиляции дров:
компилирую я это дело все прямо в VC6. единственное что стоит сделать - обновить версию компилятора... (иначе XPшные драйвера вообще не скомпилятся - там кое какие опции новые нужны)
настройки следующие:
Релиз 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 "$(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
Линкер:
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
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
Может кой какие дефенишены лишние- но они не помешают)
все проверено.
98 и 95 надеюсь никому не нужны?)))
PS мои
ml.exe ver 6.15.8803
link.exe ver 6.00.8447
для XP - 7 версия компилятора и линкера нужна... впрочем у меня и так работает НО! я там мог какие то библиотеки обновить... компилятора/линкера.
точнее уже не помню.
PPS
лан... до кучи для 98.
релиз98:*************************************************************************
компилятор
/nologo /G6 /Gz /ML /W3 /O2 /I "$(BASEDIR)\inc" /I "$(BASEDIR)\inc\win98" /I "$(BASEDIR)\inc\win98\inc16" /D "NDEBUG" /D "_DEBUG" /D "_X86_" /D "_M_IX86" /D "i386" /D NT_UP=1 /D "WIN32" /D WIN32=100 /D _WIN32_WINNT=0x0400 /D WIN32_LEAN_AND_MEAN=1 /D "_WIN98_SYS_DRIVER_" /FAs /Fa"Release_Win98/" /FR"Release_Win98/" /Fo"Debug_Win98/" /Fd"Debug_Win98/" /FD /Zel -cbstring /QIfdiv- /QIf /QI0f /GF /c
линкер
wdm.lib ntoskrnl.lib /nologo /base:"0x10000" /version:1.0 /entry:"DriverEntry@8" /subsystem:windows /incremental:no /pdb:"Release_Win98/имя.pdb" /map:"Release_Win98/имя.map" /machine:I386 /nodefaultlib /out:"Release_Win98\имя.sys" /libpath:"$(BASEDIR)\libfre\i386" /libpath:"$(BASEDIR)\lib\i386\free" -MERGE:_PAGE=PAGE -MERGE:_TEXT=.text -SECTION:INIT,d -OPT:REF -FORCE:MULTIPLE -RELEASE -FULLBUILD -MERGE:.rdata=.text -driver -align:0x20 -osversion:5.00 -subsystem:native,1.10 -driver:WDM -debug:FULL -IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096
Дебаг98:*************************************************************************
компилятор:
/nologo /G6 /Gz /MTd /W3 /GX /Zi /Oi /I "$(BASEDIR)\inc" /I "$(BASEDIR)\inc\win98" /I "$(BASEDIR)\inc\win98\inc16" /D DBG=1 /D "DEBUG" /D "_DEBUG" /D "_X86_" /D "_M_IX86" /D "i386" /D NT_UP=1 /D "WIN32" /D WIN32=100 /D _WIN32_WINNT=0x0400 /D WIN32_LEAN_AND_MEAN=1 /D "_WIN98_SYS_DRIVER_" /FAs /Fa"Debug_Win98/" /FR"Debug_Win98/" /Fo"Debug_Win98/" /Fd"Debug_Win98/" /FD /Zel -cbstring /QIfdiv- /QIf /QI0f /GF /c
линкер:
wdm.lib ntoskrnl.lib /nologo /base:"0x10000" /version:1.0 /entry:"DriverEntry@8" /subsystem:windows /incremental:no /pdb:"Debug_Win98/имя.pdb" /map:"Debug_Win98/имя.map" /debug /machine:I386 /out:"Debug_Win98/имя.sys" /libpath:"$(BASEDIR)\lib\Win98" /libpath:"$(BASEDIR)\lib\i386\free" -MERGE:_PAGE=PAGE -MERGE:_TEXT=.text -MERGE:.rdata=.text /SECTION:INIT,d /OPT:NOREF -FORCE:MULTIPLE -FULLBUILD -IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096 -align:0x20 -osversion:5.00 -subsystem:native,1.10 /driver:WDM -debug:FULL
95... морально устарело уже) но тоже есть...
и наконец... при данных дебаговых настройках softIce все понимает.
Удачи
PPPS
для VS NET - все это тоже ВОЗМОЖНО!!!!!! но кое чего подругому... в новом компиляторе старые опции отключили - generation pdb как-то по другому ставится и еще что то...
PPPPS рекомендую в Heder Files добавить ntddk.h и wtypes.h - тогда броузинг нормально будет работать... по структурам.
и еще:
#ifdef _XP2600_SYS_DRIVER_
#pragma message( "******************** Windows XP2600 sys - driver ************************")
#include <ntddk.h>
#include <windef.h>
#endif //_XP2600_SYS_DRIVER_
#ifdef _NT2000_SYS_DRIVER_
#pragma message( "******************** Windows NT2000 sys - driver ************************")
//#include <warningxx.h> //это включается в опции при использовании генерации пустого проекта
//Wizard щт Вальтера О. (скачено по нету с его сайта
#include <ntddk.h>
#include <windef.h>
#endif //_WIN98_SYS_DRIVER_
#ifdef _WIN98_SYS_DRIVER_
#pragma message( "******************** Windows 98 sys - driver ****************************")
#include <wdm.h>
#include <windef.h>
#include "win98_add.h"
//в 98 - не определена "PsGetCurrentProcessId()" .....там много чего не определено, но есть!
/*
IO_REMOVE_LOCK_COMMON_BLOCK
IO_REMOVE_LOCK_DBG_BLOCK
IO_REMOVE_LOCK
IoInitializeRemoveLockEx
IoAcquireRemoveLockEx
IoReleaseRemoveLockEx
IoReleaseRemoveLockAndWait
*/
//но присутствует в NTOSKRNL.LIB
#endif
//#include <windows.h> //#include <winuser.h>
#include <winerror.h>
сами разберетесь)