привет всем, начинаю создавать драйверы. есть опыт в программировании (vb6), потревожу вас ещё не раз). посылаю DDK Windows server2003 checked 64 bit из винды7 64 и ХР команду на создание драйвера. вот история переписки C:\WINDDK\3790>cd C:\Drivers\TestDriver C:\Drivers\TestDriver>Build BUILD: Adding /Y to COPYCMD so xcopy ops won't hang. BUILD: Object root set to: ==> objchk_wnet_IA64 BUILD: Compile and Link for IA64 BUILD: Loading C:\WINDDK\3790\build.dat... BUILD: Computing Include file dependencies: BUILD: c:\drivers\testdriver\sources(0): Unknown TARGETPATH value BUILD: Examining c:\drivers\testdriver directory for files to compile. c:\drivers\testdriver - 1 source files (21 lines) BUILD: Saving C:\WINDDK\3790\build.dat... BUILD: Compiling c:\drivers\testdriver directory BUILD: nmake.exe failed - rc = 2 BUILD: Linking c:\drivers\testdriver directory BUILD: nmake.exe failed - rc = 2 BUILD: Done C:\Drivers\TestDriver> не знаю, в чём проблема... выложите пожалуйста драйвер, который вообще ничего не делает, и команду для его компиляции. на примере этого разберусь, почему драйвер не компилируется
С DDK всё в порядке, если только он не очень старый у тебя (сейчас актуально WDK 7.1), надо просто выбирать правильное окружение сборки, для 64-битных драйверов это x64 Build Environment, в меню Пуск в соответствующей группе это всё есть, смотри внимательно. Кстати, действительно, насколько я помню, в каком-то DDK (то ли 2000, то ли XP) было только две платформы для сборки: x86 и IA64, так что здесь можно было перепутать, да, но это неправильно, IA64 это только для процессоров Itanium и Itanium 2.
у меня есть разделы windows server 2003 checked 64 bit build environment windows server 2003 checked build environment windows server 2003 free 64 bit build environment windows server 2003 free build environment что-то никак не получается. в наличии винда ХР и 7х64 пробовал разные комбинации... подскажите что нужно сделать...
Во-первых, у тебя DDK ещё от первого Server 2003 без SP. Во-вторых, у тебя не просто DDK, а IFS kit для Server 2003. В-третьих, он у тебя не полностью установлен: не хватает AMD64. Либо переустановить тот DDK, что у тебя уже есть, но без 64-bit, а с AMD64 bit. Либо скачать последний WDK 7.1 и установить его, там есть пункт x64 Build Environment.
скачал WDK7.1.0 с офиц сайта майкрософта теперь разделы ia64 checked build environment ia64 free build environment x64 checked build environment x64 free build environment теперь команда build не воспринимается нигде вообще Системе не удается найти указанный путь. C:\Windows\system32>cd C:\WORK\myDriver\TestDriver C:\WORK\MyDriver\TestDriver>build "build" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. C:\WORK\MyDriver\TestDriver>
скачал множество разных версий, перепробовал кучу файлов. выложите плз папку, из которой в итоге получается драйвер(любой, пусть даже пустой). буду очень признателен
скачал с офиц сайта WDK7.1.0 на винде ХР запускаю Windows XP x86 Free build environment. вод логи C:\WinDDK\7600.16385.1>cd C:\ C:\>cd myDriver C:\MyDriver>cd TestDriver C:\MyDriver\TestDriver>build BUILD: Compile and Link for x86 BUILD: Computing Include file dependencies: BUILD: Start time: Sun Dec 25 19:22:21 2011 BUILD: Examining c:\mydriver\testdriver directory for files to compile. BUILD: Saving c:\winddk\7600.16385.1\build.dat... BUILD: Compiling and Linking c:\mydriver\testdriver directory Configuring OACR for 'root:x86fre' - <OACR on> Dec 25 19:22:36 oacr.dll OACR version change (from build '0' to '30122') _NT_TARGET_VERSION SET TO WINXP Compiling - testdriver.c 1>errors in directory c:\mydriver\testdriver 1>c:\mydriver\testdriver\testdriver.c(15) : error C2065: '<Hello' : undeclared i dentifier 1>c:\mydriver\testdriver\testdriver.c(15) : error C2146: syntax error : missing ')' before identifier 'world' 1>c:\mydriver\testdriver\testdriver.c(15) : error C2017: illegal escape sequence 1>c:\mydriver\testdriver\testdriver.c(15) : error C2059: syntax error : ')' 1>c:\mydriver\testdriver\testdriver.c(22) : error C2065: '<Goodbye' : undeclared identifier 1>c:\mydriver\testdriver\testdriver.c(22) : error C2143: syntax error : missing ')' before '!' 1>c:\mydriver\testdriver\testdriver.c(22) : error C2017: illegal escape sequence 1>c:\mydriver\testdriver\testdriver.c(22) : error C2059: syntax error : ')' Linking Executable - objfre_wxp_x86\i386\testdriver.sys 1>link : error LNK1181: cannot open input file 'c:\mydriver\testdriver\objfre_wx p_x86\i386\testdriver.obj' BUILD: Finish time: Sun Dec 25 19:22:38 2011 BUILD: Done 3 files compiled - 4 Warnings - 8 Errors 1 executable built - 1 Error C:\MyDriver\TestDriver>
Простейший драйвер - собираться обязан. Код (Text): #include <ntddk.h> #include <ntstatus.h> extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) { _asm { xor eax, eax } return STATUS_DEVICE_CONFIGURATION_ERROR; }
спс за код драйвера, а каким должен быть код прилагаемых файлов? MAKEFILE и тд. сейчас такие логи OACR monitor running already C:\WinDDK\7600.16385.1>cd C:\myDriver\TestDriver C:\MyDriver\TestDriver>build BUILD: Compile and Link for x86 BUILD: Loading c:\winddk\7600.16385.1\build.dat... BUILD: Computing Include file dependencies: BUILD: Start time: Sun Dec 25 21:06:44 2011 BUILD: Examining c:\mydriver\testdriver directory for files to compile. BUILD: Saving c:\winddk\7600.16385.1\build.dat... BUILD: Compiling and Linking c:\mydriver\testdriver directory Configuring OACR for 'root:x86fre' - <OACR on> _NT_TARGET_VERSION SET TO WINXP Compiling - testdriver.c 1>errors in directory c:\mydriver\testdriver 1>c:\mydriver\testdriver\testdriver.c(4) : error C2059: syntax error : 'string' Linking Executable - objfre_wxp_x86\i386\testdriver.sys 1>link : error LNK1181: cannot open input file 'c:\mydriver\testdriver\objfre_wx p_x86\i386\testdriver.obj' BUILD: Finish time: Sun Dec 25 21:07:01 2011 BUILD: Done 3 files compiled - 1 Error - 11 LPS 1 executable built - 1 Error C:\MyDriver\TestDriver>
А так ? Код (Text): #include <ntddk.h> #include <ntstatus.h> NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) { _asm { xor eax, eax } return STATUS_DEVICE_CONFIGURATION_ERROR; }
XshStasX, да, компиляция прошла успешно) что-то я совсем запутался. в чём причина неудач, в ddk? в самом драйвеере? как компилировать драйверы в будущем?
А зачем в асмовой вставке обнулять eax? BelowZero В логе все написано (в скобочках номер строчки, в которой ошибка): Ну объявление DriverEntry ему не нравилось, походу на "C" ругался. Из предыдущего лога: Тут походу забыли строку в кавычки взять )
BelowZero Компилятор WDK несколько отличен от С++. К примеру нельзя объявить переменную в любом месте кода, а строго после "{". Если не ошибаюсь то такой код Код (Text): PWORD i; i++; даст инкремент только 1, тогда как в С++ на 2. И подобное.. Возможно это ограничение только на .с файлы, и на .срр файлах такого нету.
extern "C" не нравится *.с Вряд ли. Код (Text): PWORD i; i++; Этот код вообще непонятно чего даст. Код (Text): PWORD i=0; i++; Этот везде даст 1.