Компиляция драйвера

Тема в разделе "WASM.WIN32", создана пользователем netex, 4 янв 2006.

  1. netex

    netex New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    114
    Адрес:
    Russia
    Решил написать драйвер на 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$, как я понял, зажал бесплатное распространение этого пакета.
     
  2. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Поставь себе 6-ой визуал , ДДК , ДрайверСтудио и радуйся.

    ДрайверСтудио интегрируется в визуал. И ты сможешь компилить дрова как обычные проги.
     
  3. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    студия 3.2 прекрасно интегрируется в msvc .net 2003
     
  4. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
  5. netex

    netex New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    114
    Адрес:
    Russia
    ДрайверСтудио интегрируется в VS 2003 но компилировать отказывается.

    Если поставлю 6 визуалку, как правильно компилить:

    Используя чисто DDK (как у Солдатова)

    или подругому?

    Распишите поподробнее.

    P.S. А что новой DDK для VS 2003 нет? (я слышал, уже 2005 VS вышал)
     
  6. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Простейший драйвер на С++:
    Код (Text):
    1.  
    2. #define _X86_
    3.  
    4. extern "C"  {
    5. #include <ntddk.h>
    6. }
    7.  
    8. long DriverEntry(DRIVER_OBJECT * DriverObject, UNICODE_STRING * RegistryPath)
    9. {
    10.     HalMakeBeep(880);
    11.     for( int i = 18000000; i; i--)
    12.         __asm nop
    13.     HalMakeBeep(0);
    14.     return STATUS_DEVICE_CONFIGURATION_ERROR;
    15. }
    16.  
    17. #pragma comment(linker, "/entry:DriverEntry")
    18. #pragma comment(linker, "/subsystem:native")
    19. #pragma comment(linker, "/merge:.rdata=.text")
    20. #pragma comment(lib,    "hal.lib")
    21.  


    компилируется так (достаточно только DDK XP)

    cl /Gz simplest.cpp /link /align:32 /driver



    Если нужен именно С - убрать extern, и объявление переменной вынести за цикл.





    ЗЫ 2005 студия сама может дрова компилить.
     
  7. netex

    netex New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    114
    Адрес:
    Russia
    спасибо S_T_A_S_

    Как я понял нужно ставить 6-ю визуалку и тогда DDK 2000 будет работать.

    А что дает DriverStudio при интеграции с визуалкой?
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Да не нужно никаких визуалок для компиляции, мой пример компилируется из командной строки :)

    нужно только путь к cl.exe из 2003 студии прописать в PATH, а к хидерам и либам из DDK - в INCLUDE и LIB.



    Можно это всё и в студии в свойствах проекта указывать, или custom build делать, батник или makefile. но все эти замудрёные технологии слишком сложны для быстрого изучения =)



    Про DriverStudio не знаю, если цель его интеграции только лишь ради компиляции из студии - это имхо абсурд. Там есть мастер и фреймворк для визуального проектирования дров :))) - вот это кому-то и полезно, но начинать с такого имхо не стОит.
     
  9. netex

    netex New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2005
    Сообщения:
    114
    Адрес:
    Russia
    А почему такая проблема скачать DDK XP/2k ?

    Я еле нашел в прошлом году ddk 2k.

    От куда вы его берете?
     
  10. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Скачать нельзя, т.к. microsoft не распространяют свободно версии начиная с DDK XP, а предыдущие убирает из доступа. В инете они всё равно находятся. google: "Образ диска для DDK для Windows"



    добавлено:

    Всё это был бред, качайте KMDF с офсайта
     
  11. medcom

    medcom New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2006
    Сообщения:
    4
    Адрес:
    Ukraine
    Почитай статейку. Очень интересная, должна помочь c первого раза.

    "http://www.codenet.ru/progr/visualc/wdmnumega/"

    У меня получилось со второго :).

    Моя конфа:

    1) VC6.0

    2) 2kddknly

    3) NuMega.DriverStudio.v2.7
     
  12. medcom

    medcom New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2006
    Сообщения:
    4
    Адрес:
    Ukraine
    2 СТАС: "Про DriverStudio не знаю, если цель его интеграции только лишь ради компиляции из студии - это имхо абсурд. Там есть мастер и фреймворк для визуального проектирования дров :))) - вот это кому-то и полезно, но начинать с такого имхо не стОит."

    Не совсем согласен. Функциональный скелет драйвера вместе с тестовой прогой за 2 минуты. Правда с первого раза не совсем понятно суть этих классов, и приходиться опускаться ниже :).
     
  13. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Вот о том и речь - за пару минут сбацали дровину, а понять как это работает, надо ещё кучу времени потратить. И классы там ИМХО через зад спроектированы, как было модно 20 лет назад, поэтому все и кричат "ОО в ядре суксь"



    Щас уже и МС выпустили Kernel-Mode Driver Framework.

    А в него кстати входит Windows Server 2003 SP1 DDK, качайте на здоровье :derisive: