![]() |
Программирование взаимодействия
|
![]() |
![]() |
Пакет исходных кодов SergCODE (Freeware) |
К рассмотрению предлагаются примеры 2-х WDF-драйверов режима ядра (C, KMDF), с соответствующими программами пользовательского режима (C++/CLI, C#, .NET, Win32). Оба примера написаны с использованием статической библиотеки KernelUtils (“утилиты общего назначения для режима ядра”).
Для компиляции модулей режима ядра использовался Windows Driver Kit 1.0.
Для инсталляции SYS-файла в систему, помимо INF-файла, используется WdfCoInstaller.dll (версии 1.5).
Драйверные примеры тестировались под Windows 2K/XP x86.
Программы пользовательского режима относятся к .NET 2.0 (изготовлены с использованием Visual Studio 2008).
Библиотека KernelUtils предоставляет “хелперы” следующих категорий:
Папки библиотеки KernelUtils:
Папка | Содержимое |
Include | Заголовочные файлы пользовательского режима и режима ядра (H, RC) |
Include\KernelUtils | Заголовочные файлы режима ядра (H) |
KernelUtils | Исходные файлы статической библиотеки KernelUtils (C, H, ...) |
Lib | Библиотечные файлы для возможных архитектур и конфигураций (KernelUtils.lib) |
Смотрите заголовочные файлы и исходные тексты.
Данный пример демонстрирует простейшее взаимодействие приложение — драйвер:
Смотрите содержимое проектов (папка: DriverPrograms\XDevice).
Пример может быть запущен.
Пример может быть перекомпилирован.
Изначально скомпилированый вариант содержит отладочный модуль драйвера XDevice.sys и релизную версию приложения XDeviceTest.exe теста устройства (подпапка XDevice\Ready\x86).
Смотрите пример (картинки):
Тест устройства XDevice (software only device)
Поддержка устройства ShaperDevice включает следующие проекты:
Демонстрируемое ПО реально использовалось для управления экспериментальным устройством так называемого “лазерного шейпера”, предназначенного для формирования профиля сигнала светового импульса. Специально подобранная “форма” (профиль сигнала), за счёт сокращения длительности импульса позволяет многократно увеличить моментальную мощность излучения.
Смотрите сожержимое проектов (папка: DriverPrograms\ShaperDevice).
Программа ShaperTerminal базируется на специальной библиотеке ElementaryExtensions (Freeware), присутствующей в проекте в виде DLL. ElementaryExtensions, в свою очередь, является предшественницей библиотеки XHelpers (Freeware) (ключевой раздел пакета SergCODE).
Пример может быть запущен: будет иметь место так называемый DummyMode
(режим симуляции присутствия “неживого устройства”).
Пример может быть перекомпилирован.
Изначально скомпилированый комплект располагается в поддиректории Export\ShaperDevice_vXXXX.XX.XX.XX_x86.
Все модули пользовательского режима — релизные;
драйвер ShaperDevice.sys — отладочный вариант;
в файлах INF и REG “включен” параметр DummyMode.
Смотрите пример (картинки):
ShaperTerminal (Терминал управления устройством лазерного шейпера)
Первоначальная установка драйверов в систему производится с помощью мастера установки нового оборудования. Нужно указать соответствующий INF-файл (ручной режим инсталляции). В дальнейшем же можно воспользоваться вспомогательным батчем upload_driver.cmd (копирует в папку System32\Drivers файлы SYS и PDB). Останов, запуск, удаление драйверной службы осуществляется из менеджера устройств (полезно для отладки). В списке устройств системы в группе XDevices окажется устройство "XDevice" Device (Software Only), а Shaper Device (PCI) будет располагаться под узлом CoProcessors.
Компиляция примеров производится с помощью вспомогательных CMD-батчей, базирующихся на утилите $WdkBuild (которая, в свою очередь, базируются на build.exe и setenv.bat). (Смотрите: Утилиты командной строки)
Для просмотра вывода отладки рекомендуется использовать известную сервисную утилиту DebugView
(с узла Windows Sysinternals).
В настройках желательно установить мелкий моноширинный шрифт (например Lucida Console Regular 8).
Системные устройства в Device Manager:
Компиляция драйвера ShaperDevice.sys с использованием $WdkBuild:
Отладочный вывод при старте устройства XDevice (включение в диспетчере устройств):
Наверх |
© Китаев С.Ю. |