На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Написание драйвера под WinXP
    Первый раз столкнулся с проблемой написания драйвера - естественно возникли проблемы.

    Рекомендуемая среда разработки для написания драйверов Visual C (не C++!). У меня под рукой оказалась только мокрософтофская Visual Studio C++. При компиляции была найдена ошибка в windef.h. Ругается на строку *PCONTEXT <имя переменной>. Ошибка следующая пропущена ";" или неизвестный тип *PCONTEXT. Выше в библиотеке есть сточка typedef *PCONTEXT CONTEXT. Вообщем хня какая-то. Использовал файл из набора DDK for WinXP SP1.
    Кто-нибудь встречался с подобной ситуацией? (может дело в компиляторе=среда разработки?)

    Еще выскакивает ошибочка о неправильной целевой архитектуре или типа того. Значит ли это что DDK for WinXP SP1 не подходит для разработки дров под WinXP SP2?
      Дело вовсе не в компиляторе а в банальном незнании языка.
        ExpandedWrap disabled
          Visual C (не C++!).

        Что то я не понял... stKlaus - а что означает Visual перед С?
          Я даже не знаю с какого конца начать объяснять в чем дело.

          typedef *PCONTEXT CONTEXT; означает что отныне PCONTEXT == CONTEXT*
          Определения, где тип переменной начинается со звездочки - вообще недопустимы
          Сообщение отредактировано: HOMO_PROGRAMMATIS -
            Цитата MaIron @
            ExpandedWrap disabled
              Visual C (не C++!).

            Что то я не понял... stKlaus - а что означает Visual перед С?

            Microsoft Visual C, как говорят, это мамонт существовавщий до Microsoft Visual Studio. Сбился с ног никак дистрибутив нарыть не могу.

            2 HOMO_PROGRAMMATIS:
            Т.е. мокрософты выпускают гнилые ДДК? А по поводу незнания... просто никогда не возникало желания править стандартные библиотеки, поэтому и решил спросить: может кто-нибудь уже сталкивался с этой проблемой.
            Сообщение отредактировано: stKlaus -
              Цитата stKlaus @
              2 HOMO_PROGRAMMATIS:
              Т.е. мокрософты выпускают гнилые ДДК? А по поводу незнания... просто никогда не возникало желания править стандартные библиотеки, поэтому и решил спросить: может кто-нибудь уже сталкивался с этой проблемой.

              Ну, почему собственно гнилые, не такие уж и плохие ДДК от мелкомягких :) а чем собственно C++ не угодил, объективные причины плиз, а не слышал что это быстрее работать может будет, а может и нет ;) . Ну а если всеж С чистый то мир не замыкается на компилере от MS есть куча других в том числе и фриварных ...
                В упор не найду в файле windef.h такого объявления, потому что его там и нет, и не было.
                А вот в winnt.h оно есть, только записывается вот так:
                ExpandedWrap disabled
                  typedef CONTEXT *PCONTEXT;

                И подключается оно include-ом в файле windef.h

                Подозреваю что Вы неправильно настрояли среду для коппиляции!!! пытаетесь компилить драйвера в среде для компиляции WIN32 приложений. Проверте порядок подключения Include в настройках компилятора, и собственно вызовы include в Вашем драйвере!
                Сообщение отредактировано: Irp -
                  Извините. Действительно ошибся))) Писал по памяти (колдую дома), а И-нет только на работе(.

                  - В настройках среды прописывал пути для подключения библиотек и файлов-заголовков. DDKшные пути расположил в начале списка путей (сверху). Листинг привожу ниже:
                  Цитата
                  #include <ntddk.h>
                  #include "driver.h"

                  #define DEBUG

                  /*
                  Создаем макрос для вывода отладочных сообщений
                  в случае компиляции с директивой DEBUG
                  */

                  #ifdef DEBUG
                  #define DPRINT DbgPrint
                  #else
                  #define DPRINT
                  #endif


                  VOID DriverUnload(IN PDRIVER_OBJECT DriverObject)
                  {
                  DPRINT("Driver unloaded");
                  return;
                  }

                  NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,
                  IN PUNICODE_STRING RegistryPath)
                  {
                  DPRINT("Driver loaded");

                  return STATUS_SUCCESS;
                  }

                  //Взято отсюда

                  - Я лично ничего не имею против С++. Но при попытке откомпилить драйвер в Borland C++ Buider (все лабораторные и курсачи до этого делались в нем) мне было вежливо сообщено, что данный компилятор не подходит для разработки драйверов. + в той же статье я увидел:

                  Цитата
                  Начнем с вполне документированного способа: написания драйвера. Для этого нам понадобиться Visual C++ 6.0 (или позже) и комплект DDK (Driver Development Kit). DDK идет под конкретную версию Windows NT, и раньше был доступен для скачивания с сайта Microsoft, но теперь мелкомягкие стали требовать за него денег. Однако, при большом желании, DDK всё же можно найти. Подойдет практически любая версия. После установки DDK можно приступать к созданию шаблона простейшего драйвера.


                  Подытоживая все сказанное: если кто-нибудь писал дрова под винХР - скажите на чем вели разработку.
                  Сообщение отредактировано: stKlaus -
                    Проблема решена.

                    Поставил Visual Studio 2005, DDK for WinXP SP1 и откомпилировал драйвер спомощью утилиты build.

                    Спасибо за помощь всем кто откликнулся.

                    Тема закрыта.
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0.0784 ]   [ 16 queries used ]   [ Generated: 24.07.26, 12:55 GMT ]