Если нужно создать драйвер для x. Дистрибутивы имеют небольшие размеры, около 3 МБ каждый. С помощью этой версии можно создавать только драйвера. Скачиваем, распаковываем и запускаем, кликнув по файлу Pure. Basic Portable. При этом запустится IDE и вылезет окошко с сообщением что это демо версия и списком ограничений. Из него наиболее существенным является ограничение числа строк кода, равное 8. Остальные ограничения в нашем случае, не существенны. Окно IDE с загруженным кодом драйвера показано на скрине. Компиляция драйвера выполняется через меню Компилятор это если кто не понял. Теперь определимся что будет делать наш первый драйвер. Обычно при изучении программирования начинают с простых вещей, скажем, выполнения математических операций и вывода результата. Вот пусть наш драйвер делает тоже самое, ведь банальная математика производимая в режиме ядра это очень круто Код драйвера Declare Driver. EntryDriver. Object, egistry. Path. public Pure. Basic. Start. section. Сегодня по говорим о том, что такое песочница Sandboxie. Песочница Sandboxie запуск приложений в защищенной среде. На заключительном этапе вам будет предложено установить системный драйвер, представляющий собой ядро приложения. Pure. Basic. Start. ADriver. Entry. Win. API функцию Device. Io. Control. In. Buff. Size tackParametersDevice. Io. ControlInput. Buffer. Length. Out. Buff. Size tackParametersDevice. Io. ControlOutput. Buffer. Length. If In. Buff. Size Size. OfInteger And Out. Buff. Size 4. Select tackParametersDevice. Io. ControlIo. Control. Code. Case IOCTL. Вызывается при завершении работы драйвера. Вызывается однократно при его запуске. Как видите, в этом драйвере есть такая процедура. Если посмотрите на начало кода, то в первых строках увидите как ей передается управление. В этой процедуре происходит инициализация драйвера. Там же назначается процедура завершения работы драйвера, которая в нашем случае имеет имя Unload. Driver. Процедуры Create. Dispatch и Close. Dispatch назначаются обработчиками соединения и отсоединения проги из юзермода. Процедура Device. Io. Control будет обрабатывать запросы Win. API функции Device. Io. Control, являющейся в данном драйвере связью с юзермодом. В конце кода расположена так называемая Дата. Секция Data. Section, в которой находятся имена драйвера, сохраненные в формате юникода для этого использована одна из фишек ассемблера FASM. Теперь рассмотрим как драйвер будет взаимодействовать с внешним миром. Это происходит в процедуре Device. Io. Control. В ней отслеживается одно сообщение, а именно IOCTL. Когда такое сообщение получено, то считываем из системного буфера, адрес указателя на структуру со слагаемыми, производим сложение и результат помещаем в системный буфер. Собственно это основная задача нашего первого драйвера. Видите сколько понадобилось кода для выполнения простейшей математической операции сложения двух чисел А теперь рассмотрим программу, работающую с этим драйвером. Она написана на том же Pure. Basic. Для упрощения, имя драйвера, имя службы и описание службы заданы одинаковыми pb. Dr. Plus. Если загрузка неудачная, то выводится соответствующее сообщение и программа завершает свою работу. Процедура Plus осуществляет связь с драйвером. Ей передаются хэндл, доступа к драйверу и слагаемые числа, которые помещаются в структуру и указатель на указатель которой, передается драйверу. Результат сложения чисел будет в переменной Result. Далее следует код простейшего GUI калькулятора, скопированного из википедии. Когда закроют окно, то перед завершением работы программы, закрывается связь с драйвером и производится его деинсталляция из системы. Результат сложения чисел 8 и 2 на скриншоте. Исходные коды драйвера и программы, можно найти в папке Examples, Pure. Basic на файлопомойке, ссылку на который давал в начале статьи. Там так же найдете примеры драйвера прямого доступа к порам компа и пример работы с памятью ядра. PS. Помните, работа в ядре чревата мелкими неожиданностями аля, BSOD синий экран смерти, поэтому экспериментируйте осторожно и обязательно вс сохраняйте перед запуском драйвера.