Решил написать драйвер на C. Так вот проблема: как его скомпилировать? На Великом и Могучем Ассемблере все понятно, благо есть отличные туториалы (спасибо Four-F). Из софта имеется: 1. Visual Studio.net 2003 2. Compuware DriverStudio ver 3.2 В ней есть мастер создания начального кода для VS.net (но компилировать не удается) 3. DDK Built on Wednesday, June 28, 2000 Который ругается, почти матом, на отсутствие старой студии, при запуске окружения Build Environment. Installation of MSVC not detected!!! Error: MSDEVDIR environment variable not recognized MS Visual C++ 5.0 or 6.0 must be installed. Расскажите поподробнее, как правильно компилировать написанные на C драйвера. (если можно прямо по шагам) P.S. Реально ли на савке купить DDK поновее. M$, как я понял, зажал бесплатное распространение этого пакета.
Поставь себе 6-ой визуал , ДДК , ДрайверСтудио и радуйся. ДрайверСтудио интегрируется в визуал. И ты сможешь компилить дрова как обычные проги.
ДрайверСтудио интегрируется в VS 2003 но компилировать отказывается. Если поставлю 6 визуалку, как правильно компилить: Используя чисто DDK (как у Солдатова) или подругому? Распишите поподробнее. P.S. А что новой DDK для VS 2003 нет? (я слышал, уже 2005 VS вышал)
Простейший драйвер на С++: Код (Text): #define _X86_ extern "C" { #include <ntddk.h> } long DriverEntry(DRIVER_OBJECT * DriverObject, UNICODE_STRING * RegistryPath) { HalMakeBeep(880); for( int i = 18000000; i; i--) __asm nop HalMakeBeep(0); return STATUS_DEVICE_CONFIGURATION_ERROR; } #pragma comment(linker, "/entry:DriverEntry") #pragma comment(linker, "/subsystem:native") #pragma comment(linker, "/merge:.rdata=.text") #pragma comment(lib, "hal.lib") компилируется так (достаточно только DDK XP) cl /Gz simplest.cpp /link /align:32 /driver Если нужен именно С - убрать extern, и объявление переменной вынести за цикл. ЗЫ 2005 студия сама может дрова компилить.
спасибо S_T_A_S_ Как я понял нужно ставить 6-ю визуалку и тогда DDK 2000 будет работать. А что дает DriverStudio при интеграции с визуалкой?
Да не нужно никаких визуалок для компиляции, мой пример компилируется из командной строки нужно только путь к cl.exe из 2003 студии прописать в PATH, а к хидерам и либам из DDK - в INCLUDE и LIB. Можно это всё и в студии в свойствах проекта указывать, или custom build делать, батник или makefile. но все эти замудрёные технологии слишком сложны для быстрого изучения =) Про DriverStudio не знаю, если цель его интеграции только лишь ради компиляции из студии - это имхо абсурд. Там есть мастер и фреймворк для визуального проектирования дров )) - вот это кому-то и полезно, но начинать с такого имхо не стОит.
А почему такая проблема скачать DDK XP/2k ? Я еле нашел в прошлом году ddk 2k. От куда вы его берете?
Скачать нельзя, т.к. microsoft не распространяют свободно версии начиная с DDK XP, а предыдущие убирает из доступа. В инете они всё равно находятся. google: "Образ диска для DDK для Windows" добавлено: Всё это был бред, качайте KMDF с офсайта
Почитай статейку. Очень интересная, должна помочь c первого раза. "http://www.codenet.ru/progr/visualc/wdmnumega/" У меня получилось со второго . Моя конфа: 1) VC6.0 2) 2kddknly 3) NuMega.DriverStudio.v2.7
2 СТАС: "Про DriverStudio не знаю, если цель его интеграции только лишь ради компиляции из студии - это имхо абсурд. Там есть мастер и фреймворк для визуального проектирования дров )) - вот это кому-то и полезно, но начинать с такого имхо не стОит." Не совсем согласен. Функциональный скелет драйвера вместе с тестовой прогой за 2 минуты. Правда с первого раза не совсем понятно суть этих классов, и приходиться опускаться ниже .
Вот о том и речь - за пару минут сбацали дровину, а понять как это работает, надо ещё кучу времени потратить. И классы там ИМХО через зад спроектированы, как было модно 20 лет назад, поэтому все и кричат "ОО в ядре суксь" Щас уже и МС выпустили Kernel-Mode Driver Framework. А в него кстати входит Windows Server 2003 SP1 DDK, качайте на здоровье