Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

[Дополнительная информация]

Ifs Kit help или DDK help: Driver Writers Guide\Driver Development Environment

[Л. 1] Chapter 18. Buildind and debugging drivers

[Л. 2] Chapter 8. Device Driver Structure; Chapter 9. Debugging a Device Driver

В этом разделе мы рассмотрим следующие вопросы:

    Необходимое ПО

    Установка и настройка

Необходимое ПО:

    Операционная система, Service Pack и отладочная информация

    Компилятор

    Средства отладки и вспомогательные средства

Операционная система имеет 2 варианта поставки:

    Checked build (Debug build)

    Free build (Retail build)

Free build – обычная поставка. Включена полная оптимизация и отсутствует специализированные отладочные возможности.

Checked build – специально разработана для использования разработчиками драйверов. Оптимизации почти нет, что способствует лучшему пониманию кода при работе под отладчиком. Специализированный отладочный код встроен во многие функции для проверки правильности параметров и перехвата ошибочных ситуаций. Поставляется только в составе подписки MSDN.

В комплекте с ОС нам понадобится отладочная информация (файлы с расширением.dbgи.pdb). Она содержит сопоставление адресов внутри конкретного исполняемого файла с символическими именами функций и переменных и может быть использована отладчиками.

Необходимо подчеркнуть, что символьная информация различна для checkedи freeверсий системы.

После установки ОС необходимо установить последнюю версию SP. Надо помнить, что SP заменяет почти все системные файлы, и поэтому для них необходима новая символьная информация.

Для checkedи freeверсий системы необходимы отдельные версии SP. Кроме того, ОС и SP могут различаться по поддержке криптоалгоритмов (40-128 бит), что может влиять на возможность установки SP.

Компилятор . Хотя принципиально могут использоваться компиляторы различных производителей, структура заголовочных файлов и переменных окружения, поставляемых Microsoft для создания драйверов оптимизирована для использования компилятораMicrosoft Visual C. Версия компилятора должна быть не ниже 4.1, однако реально необходимая версия будет зависеть от двух других компонентов – SDKи DDK.

MSDN Library . При установке Developer Studio запрашивается установка MSDN Library –продукт, предоставляющий информацию о разработке ПО на всех поддерживаемых платформах Microsoft.

SDK . В ранних версиях комплект назывался Win32 SDK , сейчас – Platform SDK . Это необязятельный, но желательный для разработки драйверов компонент. Содержит заголовочные файлы, lib-файлы, документацию и примеры программирования на пользовательском уровне с использованием подсистемы Win32.

DDK . Существуют DDKдля Windows 95, Windows 98, Windows NT 4.0и Windows 2000. DDKдолжен соответствовать платформе, для которой предполагается создание драйвера, но не обязательно – на которой производится создание. Мы будем пользоваться DDKдля Windows NT 4.0. DDKсодержит заголовочные файлы, документацию и примеры написания драйверов, за исключением драйверов файловой системы.

IFS Kit . Пакет для создания драйверов файловой системы. Поставляется как отдельный от подписки MSDNпродукт. Существуют версии для Windows 98, Windows NT 4.0и Windows 2000. Последние версии включают в себя DDK, но с другим набором примеров. Более ранние версии требовали предварительной установки DDK.

Между перечисленным набором компонентов существует взаимосвязь:

Первым ставится компилятор. Как уже говорилось, хотя существует возможность использования компиляторов других фирм, SDKи DDK предполагают наличие именно Visual C, причем в зависимости от времени выхода SDKи DDK предполагаются различные версии компилятора (при линковке будут указаны библиотеки от различных версий – этим грешит SDK, либо будут некорректно запускаться командные файлы инициализации переменных окружения – этим грешит DDK). Кроме того, ранние версии DDK требовали обязательного наличия установленного SDK. Из возможных проблем еще стоит указать то, что при использовании ОС Windows NT Workstation могут не устанавливаться системные переменные окружения.

Расположение командных файлов для установки переменных окружения:

    VC98\bin\vcvars32.bat

    Mstools\setenv.bat

    Ddk\bin\setenv.bat

При наличии версии DDK, требующей наличия SDK, из файла Ddk\bin\setenv.bat должны быть исключены строки проверки наличия SDK и запуска его файла setenv.bat, и прописан вызов vcvars32.bat, как это сделано на рабочих местах, где будут проходить л/р.

Средства отладки и вспомогательные средства.

Выбор средства отладки – важный момент, который может влиять на набор необходимых аппаратных средств.

Вместе с продуктами Microsoft поставляются 4 отладчика:

KD ,консольная программа для отладки драйверов режима ядра, находится в директории bin пакета DDK для NT4и Win2000. (i386kd.exe, ia64kd.exe, alphakd.exe, mipskd.exe)

NTSD ,консольная программа для отладки программ и драйверов пользовательского режима,находится в директории system32 ОСWindows 2000.

CDB ,вариант NTSD,содержится в директории bin пакетаDDK для Windows 2000.

WinDbg ,графический отладчик для отладки кода как пользовательского режима, так и режима ядра, содержится в директории bin пакетаDDK для Win2000 и Platform SDK.

Из всех перечисленных вариантов упоминания достоин только отладчик WinDbg. Он предоставляет удобный пользовательский интерфейс, однако очень неустойчив в работе, плохо документирован и не имеет поддержки от Microsoft. Для использования этого продукта для отладки драйверов необходимы 2 компьютера – Development Рlatformи Test Platform. Отладчик доступен для всех поддерживаемых платформ, при этом возможна кроссплатформенная отладка. Поддерживается работа на мультипроцессорных системах.

Лучшим отладчиком для отладки ОС и драйверов многие разработчики с полным основанием считают SoftICEфирмы NuMega. Стабильный в работе, хорошо документированный, поддержка от фирмы. Отладка осуществляется на том же компьютере, на котором проводилась разработка, однако возможна и удаленная отладка посредством dos-программы serial.exe. Недостатком можно считать пользовательский интерфейс, однако это дело привычки. Более серьезными недостатками является ограничение поддержки процессоров только платформой intel, а также отсутствие поддержки мультипроцессорных систем (однако система все еще активно развивается).

На рабочих местах для выполнения л/р установлен SoftIce в составе пакета NuMega Driver Studio v 2.0. Имеется полная документация в формате pdf.

На рабочих местах имеется также ряд вспомогательных средств для удобства в исследовании ОС и поведения драйверов. Часть этих средств снабжена исходными текстами, и все они могут являться хорошим наглядным пособием для написания драйверов. Перечислим эти средства:

    Monitor – просмотр трассировочной информации, выводимой драйверами и прикладными программами.

    Winobj – просмотр пространства имен диспетчера объектов

    Handleex – информация о запущенных процессах, всех открытых ими описателях и подгруженных модулях dll.

    Filemon – просмотр активности файловых систем, в том числе mailslotи npfs

    Regmon – отслеживание обращений к реестру, в том числе на этапе загрузки системы

    Portmon – отслеживание обращений к последовательным и параллельным портам

    Tdimon – отслеживание запросов TDI.

    Tokenmon – отслеживание работы системы, касающихся srm.

Интегрированная Среда Разработки (IDE = «I ntegrated D evelopment E nvironment») – это программное обеспечение, которое содержит всё необходимое для разработки, компиляции, линкинга и отладки кода. Нам нужно установить одну такую IDE.

Но какую именно? Я рекомендую Visual Studio от Microsoft (для пользователей Windows) или Code::Blocks (для пользователей Linux/Windows). Также вы можете установить и любую другую IDE. Основные концепции, рассматриваемые в этих уроках, должны работать во всех средах разработки. Впрочем, иногда код может частично отличаться в разных IDE, поэтому вам придётся самостоятельно искать более подробную информацию о работе в выбранной вами IDE.

IDE под Windows

Если вы пользователь Windows (как и большинство из нас), то установите Visual Studio 2017 версию «Сообщество», которая является бесплатной (все остальные версии – платные):

После того, как вы скачаете и запустите установщик, вам нужно будет выбрать «Разработка классических приложений на C++ ». Пункты, выбранные по умолчанию в правой части экрана, трогать не нужно – там всё хорошо, только убедитесь, что галочка поставлена возле «Пакет SDK для Windows 10» . Этот пакет может использоваться и в ранних версиях Windows, поэтому не переживайте, если у вас Windows 7 или Windows 8 – всё будет работать. Затем «Установить» .

При желании вы можете указать галочки и возле других пунктов для скачивания, но учтите, что тогда размер вашей IDE будет солидно увеличен.

IDE под Linux/Windows

Если вы пользователь Linux (или Windows, но хотите писать программы, которые затем можно будет легко портировать в Linux), то установите Code::Blocks . Эта бесплатная, кроссплатформенная, IDE, которая работает как в Linux, так и в Windows.

Пользователям Windows нужно загружать версию с MinGW в комплекте:

Установка простая: просто соглашаетесь со всем, о чём вас спрашивают. Функционал C++11/C++14 в Code::Blocks по умолчанию может быть отключен. Чтобы его использовать, вам нужно перейти в «Settings» > «Compiler» :

И во вкладке «Compiler Flags » поставить галочку возле пункта «Have g++ follow the C++14 ISO C++ language standard [-std=c++14]» , затем нажать «Ок» :

Примечание : После установки Code::Blocks у некоторых пользователей может появиться следующее сообщение об ошибке: Can’t find compiler executable in your configured search paths for GNU GCC Compiler . Если вы столкнулись с этим, то попробуйте выполнить следующее:

Если вы пользователь Windows, убедитесь, что вы загрузили версию Code::Blocks с MinGW (в названии скачиваемого установщика должно быть слово «mingw»).

Попробуйте выполнить полностью удалить Code::Blocks, а затем установить его заново.

Перейдите в «Settings» > «Compiler» и выберите «Reset to defaults» .

Если ничего из вышеуказанного не помогло, попробуйте установить другую IDE.

В качестве альтернативы подойдёт , который также работает как в Windows, так и в Linux.

IDE под macOS

Пользователи техники Apple могут использовать Xcode или Eclipse . Eclipse по умолчанию не настроен на использование C++, поэтому вам нужно будет дополнительно установить компоненты для C++.

Веб-компиляторы

Веб-компиляторы подходят для написания простых, небольших программ. Их функционал ограничен: вы не сможете сохранять проекты, создавать исполняемые файлы или эффективно проводить отладку программ, поэтому лучше скачать полноценную IDE, если у вас действительно серьёзные намерения по поводу программирования. А веб-компиляторы используйте разве что для быстрого запуска небольших программ.

Популярные веб-компиляторы .

    Интегрированная среда разработки - программный комплекс, предназначенный для продуктивной разработки прикладных систем и состоящий: из редакторов исходных текстов и ресурсов; из компилятора; из отладчика; из средств управления проектом и оперативной помощи; + включающий… … Финансовый словарь

    Интегрированная среда разработки приложений

    Среда разработки программного обеспечения - (Интегрированная) среда разработки программного обеспечения (англ. IDE, Integrated development environment) система программных средств, используемая программистами для разработки программного обеспечения. Обычно среда разработки включает в себя… … Википедия

    среда разработки ПО - 3.62 среда разработки ПО: Интегрированная система, включающая в себя аппаратные средства, ПО, программно аппаратные средства, процедуры и документы, необходимые для разработки ПО. Источник: ГОСТ Р 51904 2002: Программное обеспечение встроенных… …

    Eclipse (среда разработки) - У этого термина существуют и другие значения, см. Eclipse. Eclipse … Википедия

    Delphi (среда разработки) - У этого термина существуют и другие значения, см. Delphi. Embarcadero Delphi … Википедия

    среда - 3.3.3 среда (environment): Связь между синтаксисом и семантикой. Примечание В контексте настоящего стандарта объект environment привязывает к объекту generic variable (синтаксису) соответствующее ему значение (семантику), представленное объектом… … Словарь-справочник терминов нормативно-технической документации

    среда верификации/тестирования ПО - 3.63 среда верификации/тестирования ПО: Интегрированная система, включающая в себя аппаратные средства, ПО, программно аппаратные средства, процедуры и документы, необходимые для выполнения верификации/тестирования ПО. Элементами данной среды… … Словарь-справочник терминов нормативно-технической документации

    Turbo Pascal - У этого термина существуют и другие значения, см. Turbo. Turbo Pascal Среда разработки Turbo Pascal 7.1 Тип … Википедия

    ДРАКОН - Эта статья предлагается к удалению. Пояснение причин и соответствующее обсуждение вы можете найти на странице Википедия:К удалению/28 сентября 2012. Пока процесс обсуждения не завершён, статью мож … Википедия

Книги

  • , И. И. Попов , О. Л. Голицына , Рассмотрены основные принципы программирования на языках высокого уровня: основные управляющие структуры программирования; стандартные типы данных; структуры данных; процедуры и функции;… Категория: Пособия и справочники Серия: Лазерная техника и технология Издатель: Форум , Производитель: Форум , Купить за 2039 грн (только Украина)
  • Программирование на языках высокого уровня: Учебное пособие , Голицына О.Л. , Рассмотрены основные принципы программирования на языках высокого уровня: основные управляющие структуры программирования; стандартные типы данных; структуры данных; процедуры и функции;… Категория:

Подбор удобного инструмента - одна из главных задач программиста. И первым делом это касается среды разработки. IDE отличается от простого редактора кода 4 вещами:

  • Поддержка большого числа языков программирования. Как правило, всех в рамках направленности (веб, мобайл, десктоп).
  • Наличие компилятора, интерпретатора для преобразования творений в машинный код.
  • Встроенные утилиты для автоматизации процесса: библиотеки, шаблоны, сниппеты и т. д.
  • Дебаггер для обнаружения ошибок, опечаток и прочих опасностей.

Для новичка в программировании может хватить редактора, который использует 1−2 языка, а ошибки ловить лучше в ручном режиме, чтобы видеть их последствия.

Но как только вы выходите на путь «взрослой» разработки, без хорошей IDE не обойтись. И хорошо, чтобы она была бесплатной. Вот подборка 9 субъективно лучших:

NetBeans

Платформа: Windows/Mac/Linux

Описание: NetBeans - кроссплатформенная open-source IDE, предназначенная для работы на Java, но поддерживающая Python, JavaScript, Ruby, C, C++, Ada, PHP, HTML, CSS, XML, Groovy. Среда позволяет работать во всех трех направлениях разработки.

Eclipse

Платформа: Windows/Mac/Linux

Описание: Ещё одна популярная IDE, не имеющая привязки к ОС, и с помощью надстроек поддерживающая до 25 языков программирования. Вообще количество подключаемых библиотек делает Eclipse одной из самых функциональных IDE.

Microsoft Visual Studio Express

Платформа: Windows

Описание: Урезанная, но бесплатная версия Visual Studio. Для новичка её возможностей хватит с головой:

  • Система автодополнения IntelliSense.
  • Поддержка C/C++/C#/Python/Ruby/VB.NET/JavaScript/HTML/CSS/XML.
  • Поддержка систем контроля версий Git и TFS.
  • Интеграция с Azure.

CodeLite

Платформа: Windows/Mac/Linux

Описание: Кроссплатформенная IDE для разработки ПО на C/C++, PHP и Node.js. Несмотря на свою минималистичность, все базовые потребности разработчика она удовлетворит.

Code::Blocks

Платформа: Windows/Mac/Linux

Описание: 3 главные фишки Code::Blocks:

  • Поддержка большого числа компиляторов, среди которых MinGW/GCC, Watcom, Clang, Digital Mars C/C++, и отладчиков GNU GDB и MS CDB.
  • Инструмент wxSmith для быстрой разработки приложений (RAD).
  • Основная библиотека wxWidgets упрощает разработку графического интерфейса в приложениях.

Qt Creator

Платформа: Windows/Mac/Linux

Описание: Qt Creator специализируется на работе с C, C++ и QML, поддерживает те же самые компиляторы и отладчики, что и Code::Blocks. Работает со всеми популярными системами контроля версий: Subversion, Mercurial, Git, CVS, Bazaar, Perforce.

Aptana Studio

Платформа: Windows/Mac/Linux

Описание: Без подключения библиотек Aptana может работать только с JavaScript, HTML и CSS. С ними поддерживает PHP, Python и Ruby. Также Aptana подключается к Eclipse в качестве плагина, что делает её еще более полезной для новичка.

WebScripter

Платформа:Mac

Описание: WebScripter - простая и понятная IDE «яблочных» веб-разработчиков. Не развивается уже лет 5, но для старта хватит встроенных редактора, отладчика и дебаггера.

PSPad

Платформа: Windows

Описание: Редактор кода, поддерживающий более 30 языков программирования, в том числе COBOL и Pascal. Имеет возможность подключения внешнего компилятора и дебаггера, что превращает PSPad в настоящую IDE.

Некоторые из перечисленных инструментов хороши только для первых шагов в разработке, зато вам не придется тратить много времени на их изучение. Другие перекрывают возможности большинства платных конкурентов, поэтому могут стать спутниками на всю жизнь, но требует долгого освоения.

Какой выбор сделали вы?

    Программный комплекс, предназначенный для продуктивной разработки прикладных систем и состоящий: из редакторов исходных текстов и ресурсов; из компилятора; из отладчика; из средств управления проектом и оперативной помощи; + включающий… … Финансовый словарь

    - (Интегрированная) среда разработки программного обеспечения (англ. IDE, Integrated development environment) система программных средств, используемая программистами для разработки программного обеспечения. Обычно среда разработки включает в себя… … Википедия

    среда разработки ПО - 3.62 среда разработки ПО: Интегрированная система, включающая в себя аппаратные средства, ПО, программно аппаратные средства, процедуры и документы, необходимые для разработки ПО. Источник: ГОСТ Р 51904 2002: Программное обеспечение встроенных… …

    У этого термина существуют и другие значения, см. Eclipse. Eclipse … Википедия

    У этого термина существуют и другие значения, см. Delphi. Embarcadero Delphi … Википедия

    среда - 3.3.3 среда (environment): Связь между синтаксисом и семантикой. Примечание В контексте настоящего стандарта объект environment привязывает к объекту generic variable (синтаксису) соответствующее ему значение (семантику), представленное объектом… … Словарь-справочник терминов нормативно-технической документации

    среда верификации/тестирования ПО - 3.63 среда верификации/тестирования ПО: Интегрированная система, включающая в себя аппаратные средства, ПО, программно аппаратные средства, процедуры и документы, необходимые для выполнения верификации/тестирования ПО. Элементами данной среды… … Словарь-справочник терминов нормативно-технической документации

    У этого термина существуют и другие значения, см. Turbo. Turbo Pascal Среда разработки Turbo Pascal 7.1 Тип … Википедия

    Эта статья предлагается к удалению. Пояснение причин и соответствующее обсуждение вы можете найти на странице Википедия:К удалению/28 сентября 2012. Пока процесс обсуждения не завершён, статью мож … Википедия

Книги

  • , И. И. Попов , О. Л. Голицына , Рассмотрены основные принципы программирования на языках высокого уровня: основные управляющие структуры программирования; стандартные типы данных; структуры данных; процедуры и функции;… Категория: Пособия и справочники Серия: Лазерная техника и технология Издатель: Форум , Производитель: Форум ,
  • Программирование на языках высокого уровня: Учебное пособие , Голицына О.Л. , Рассмотрены основные принципы программирования на языках высокого уровня: основные управляющие структуры программирования; стандартные типы данных; структуры данных; процедуры и функции;… Категория:

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: