Драйвер это программа для управления архивированием данных
Многие считают что самому создать драйвер для Windows это что-то на грани фантастики. Но на самом деле это не так. Конечно, разработка драйвера для какого-то навороченного девайса бывает не простой задачей. Но ведь тоже самое можно сказать про создание сложных программ или игр. В разработке простого драйвера нет ничего сложного и я попытаюсь на примерах это показать.
Сперва нам нужно определится в чем мы же будем создавать наш первый драйвер. Поскольку материал ориентирован на новичков, то язык программирования был выбран один из простых, и это не Си или ассемблер, а бейсик. Будем использовать один из диалектов бейсика — PureBasic. Из коробки он не обучен создавать драйверы, но у него удачный набор файлов, используемых для компиляции и небольшое шаманство позволяет добавить эту возможность. Процесс компиляции состоит из нескольких этапов. Если кратко, то он происходит следующим образом: Сначала транслятор «перегоняет» basic-код в ассемблер, который отдается FASM'у (компилятор ассемблера), который создает объектный файл. Далее в дело вступает линкер polink, создающий исполняемый файл. Как компилятор ассемблера, так и линкер могут создавать драйверы и если немного изменить опции компиляции, то получим не исполняемый файл, типа EXE или DLL, а драйвер режима ядра (SYS).
Окно IDE с загруженным кодом драйвера показано на скрине.
Компиляция драйвера выполняется через меню «Компилятор» (это если кто не понял).
Теперь определимся что будет делать наш первый драйвер. Обычно при изучении программирования начинают с простых вещей, скажем, выполнения математических операций и вывода результата. Вот пусть наш драйвер делает тоже самое, ведь банальная математика производимая в режиме ядра это очень круто!
Может показаться что это куча бессмысленного кода, но это не так.
У каждого драйвера должна быть точка входа, обычно у нее имя DriverEntry() и выполнена она в виде процедуры или функции. Как видите, в этом драйвере есть такая процедура. Если посмотрите на начало кода, то в первых строках увидите как ей передается управление. В этой процедуре происходит инициализация драйвера. Там же назначается процедура завершения работы драйвера, которая в нашем случае имеет имя UnloadDriver(). Процедуры CreateDispatch() и CloseDispatch() назначаются обработчиками соединения и отсоединения проги из юзермода.
Процедура DeviceIoControl() будет обрабатывать запросы WinAPI функции DeviceIoControl(), являющейся в данном драйвере связью с юзермодом. В конце кода расположена так называемая ДатаСекция (DataSection), в которой находятся имена драйвера, сохраненные в формате юникода (для этого использована одна из фишек ассемблера FASM).
Видите сколько понадобилось кода для выполнения простейшей математической операции — сложения двух чисел?
А теперь рассмотрим программу, работающую с этим драйвером. Она написана на том же PureBasic.
Процедура Plus() осуществляет связь с драйвером. Ей передаются хэндл, доступа к драйверу и слагаемые числа, которые помещаются в структуру и указатель на указатель которой, передается драйверу. Результат сложения чисел будет в переменной «Result».
Далее следует код простейшего GUI калькулятора, скопированного из википедии.
Когда закроют окно, то перед завершением работы программы, закрывается связь с драйвером и производится его деинсталляция из системы.
Результат сложения чисел 8 и 2 на скриншоте.
Исходные коды драйвера и программы, можно найти в папке «Examples», PureBasic на файлопомойке, ссылку на который давал в начале статьи. Там так же найдете примеры драйвера прямого доступа к порам компа и пример работы с памятью ядра.
PS.
Помните, работа в ядре чревата мелкими неожиданностями аля, BSOD (синий экран смерти), поэтому экспериментируйте осторожно и обязательно всё сохраняйте перед запуском драйвера.
Утилиты предоставляют пользователю дополнительные услуги (не требующие разработки специальных программ) в основном по обслуживанию дисков и файловой системы.
Эти программы напрямую в вычислительном процессе не используются, а обеспечивают необходимый и разнообразный сервис при подготовке заданий пользователями.
Утилиты чаще всего позволяют выполнять следующие функции:
- обслуживание дисков (форматирование, архивация, сжатие, обеспечение сохранности информации, возможности ее восстановления в случае сбоя и т.д.);
- обслуживание файлов и каталогов (аналогично оболочкам);
- создание и обновление архивов;
- предоставление информации о ресурсах компьютера, о дисковом пространстве, о распределении ОЗУ между программами;
- печать текстовых и других файлов в различных режимах и форматах;
- защита от компьютерных вирусов.
Из утилит, получивших наибольшую известность, можно назвать программы MS Plub, а также комплексы программ Norton Navigator и Norton Utilites фирмы Symantec PC Tool Deluxe и др.
Антивирусные программы обеспечивают диагностику (обнаружение) и лечение (нейтрализацию) вирусов. Термином «вирус» обозначается программа, способная размножаться, внедряясь в другие программы, совершая при этом нежелательные различные действия. Среди антивирусных программ хорошо себя зарекомендовали Norton Antivirus (Фирмы Symantec), MS Antivirus в составе DOS 6.XX (фирмы Microsoft), Dr. Web (фирмы Диалог – Наука), Antiviral Toolki Pro (фирмы Ками) и др.
Несмотря на то, что объемы внешней памяти ЭВМ постоянно растут, потребность в архивации не уменьшается. Это объясняется тем, что архивация необходима не только для экономии места в памяти, но и для надежного хранения ценной информации, а также для быстрой передачи информации в другие сети ЭВМ.
Кроме того, возможность отказа магнитных носителей информации, разрушающее действие вирусов заставляют пользователей делать резервное копирование ценной информации на другие (запасные) носители информации.
Процесс записи файла в архивный файл называется архивированием (упаковкой, сжатием), а извлечение файла из архива – разархивированием (распаковкой). Упакованный (сжатый) файл называется архивом. Архивация информации – это такое преобразование информации, при котором объем информации уменьшается, а количество информации остается прежним. Степень сжатия информации зависит от типа файла, а также от выбранного метода упаковки.
Степень (качество) сжатия файлов характеризуется коэффициентом сжатия Кс, определяемый как отношение объема сжатого файла Vc к объему исходного файла Vo, выраженное в процентах: Чем меньше Кс, тем выше степень сжатия информации. Заметим, что в некоторых литературных источниках встречается определение коэффициента сжатия, обратное приведенному отношению.
Проблемы архивации (упаковки) тесно переплетены с проблемами кодирования (замена символов текста двоичными кодами с помощью кодовой таблицы), шифрования (криптография), компрессией звуковых и видеосигналов.
Все используемые методы сжатия информации можно разделить на 2 класса: упаковка без потерь информации (обратимый алгоритм) и упаковка с потерей информации (необратимый алгоритм).
Для уменьшения размеров мультимедийных файлов используют процедуру сжатия.
Под сжатием (компрессией, упаковкой, уплотнением) понимается такое преобразование информации, в результате которого исходный файл уменьшается в объеме, а количество информации в сжатом файле уменьшается на такую небольшую величину, которой практически можно пренебречь. По смыслу термин «сжатие» близок к термину «архивация». Однако последний термин чаще всего предлагает сжатие информации без ее искажения (без изменения, без потерь).
В зависимости от скорости упаковки изображений методы сжатия подразделяются на 2 группы.
К первой группе относится метод сжатия неважных изображений. Сжатие может выполняться с любой скоростью, так как этот процесс не регламентирован временем (в силу статичности изображения). Вторую группу образует методы сжатия движущихся изображений. Сжатие движущихся изображений должно выполняться, как правило, в режиме реального времени по мере ввода данных.
Статьи к прочтению:
Системные Программы Операционные Драйверы Утилиты
Похожие статьи:
Драйвер — программа, которая управляет работой внешнего устройства, преобразует данные на входе и выходе. Чтобы сигнал от внешнего устройства был…
Операционная система, сокр. ОС (англ. operating system, OS) — комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как…
− обрабатывает прерывания от обслуживаемого внешнего устройства.
Драйвер является согласующим звеном между обращающимися к ВУ программами и самим ВУ. Драйверы бывают стандартными и загружаемыми.
Стандартные драйверы управляют работой стандартных устройств: монитором, клавиатурой, дисководами и принтером. Они записываются в постоянное запоминающее устройство ПК при его программировании вне машины и входят в состав системы ввода-вывода.
Загружаемые драйверы используются в следующих случаях:
− Для управления дополнительными внешними устройствами ПК,
например, графопостроителем, сканером, мышью и т.п.;
− Для управления стандартными внешними устройствами, чем-либо отличными от штатных, предусмотренных в базовом комплекте ПК;
1.2 Сервисные системы
Сервисные системы расширяют возможности ОС, предоставляя пользователю, а также выполняемым программам набор разнообразных дополнительных услуг. К сервисным системам относят оболочки, утилиты и операционные среды (интерфейсные системы).
Оболочка операционной системы - это программный продукт, который делает общение пользователя с компьютером более комфортным. В связи с несовершенством пользовательского интерфейса операционных систем семейства DOS было разработано несколько операционных оболочек. Наибольшую популярность среди пользователей ПК получила операционная оболочка Norton Commander, созданная компанией Peter Norton Computing.
Утилиты - это служебные программы, которые предоставляют пользователю ряд дополнительных услуг. Во многих случаях они используются для расширения или улучшения функций операционных систем. Некоторые служебные программы (как правило, это программы обслуживания) изначально включают в состав операционной системы, но большинство служебных программ являются для операционной системы внешними и служат для расширения ее функций
К утилитам относят следующие программные средства: дисковые компрессоры; дисковые дефрагментаторы; программы резервного копирования данных; архиваторы; программы, оптимизирующие использование оперативной памяти; программы защиты и восстановления данных; антивирусные программы и др.
Дадим им краткую характеристику.
Утилита дефрагментации диска (DEFRAG) предназначена для оптимизации работы диска и повышения скорости доступа к нему. При копировании, удалении и перемещении файлов на жестком или гибком диске возникают пустые места, которые затем заполняются фрагментами других файлов. Файловая система Windows дает возможность хранить файлы фрагментами. Если файл разбит на несколько фрагментов, скорость доступа к нему уменьшается, поскольку на перемещение головок диска к очередному фрагменту требуется намного больше времени, чем на его считывание. Дефрагментация диска состоит в том, что фрагменты файла собираются в один блок. Можно выбрать один из трех способов дефрагментации: полную дефрагментацию, дефрагмептацию только файлов, объединение свободных участков диска.
В первом случае фрагменты файлов объединяются так, чтобы файлы занимали непрерывный участок диска. Все свободное пространство на диске также объединяется в один участок. Во втором случае выполняется объединение только фрагментов файлов. Они будут занимать последовательные участки на диске, по между ними может быть свободное пространство, доступное для размещения других файлов. В третьем случае отдельные свободные участки на диске собираются в один большой блок.
Программа проверки диска (ScanDisk) проверяет правильность информации, которая содержится в таблицах распределения файлов диска (FAT), а также осуществляет поиск сбойных блоков диска.
Средства сжатия данных (архиваторы). Предназначены для создания архивов. Архивирование данных упрощает их хранение за счет того, что большие группы файлов и каталогов сводятся в один архивный файл.
Средства контроля (мониторинга). Они позволяют следить за процессами, происходящими в компьютерной системе. При этом возможны два подхода: наблюдение в реальном режиме времени и контроль с записью результатов в специальном протокольном файле. Первый подход обычно используют для оптимизации работы вычислительной системы и повышения ее эффективности. Второй подход используют в тех случаях, когда мониторинг выполняется автоматически и (или) дистанционно. В последнем случае результаты мониторинга можно передать удаленной службе технической поддержки для установления причин конфликтов в работе программного и аппаратного обеспечения.
Диспетчеры файлов (файловые менеджеры). С помощью программ данного класса выполняется большинство операций, связанных с обслуживанием файловой структуры; копирование, перемещение и переименование файлов, создание каталогов (папок), удаление файлов и каталогов, поиск файлов и навигация в файловой структуре.
Средства обеспечения компьютерной безопасности. К этой весьма широкой категории относятся средства пассивной и активной защиты данных от повреждения, а также средства защиты от несанкционированного доступа, просмотра и изменения данных. В качестве средств пассивной защиты используют служебные программы, предназначенные для резервного копирования. В качестве средств активной защиты применяют антивирусное программное обеспечение. Для защиты данных от несанкционированного доступа, их просмотра и изменения служат специальные системы, основанные на криптографии.
Архивация - это сжатие одного или более файлов с целью экономии памяти и размещение сжатых данных в одном архивном файле. Архивация данных - это уменьшение физических размеров файлов, в которых хранятся данные, без значительных информационных потерь.
Архивация проводится в следующих случаях:
· Когда необходимо создать резервные копии наиболее ценных файлов
· Когда необходимо освободить место на диске
· Когда необходимо передать файлы по E-mail
Архивный файл представляет собой набор из нескольких файлов (одного файла), помещенных в сжатом виде в единый файл, из которого их можно при необходимости извлечь в первоначальном виде. Архивный файл содержит оглавление, позволяющее узнать, какие файлы содержатся в архиве.
В оглавлении архива для каждого содержащегося в нем файла хранится следующая информация:
· Размер файла на диске и в архиве
· Сведения о местонахождения файла на диске
· Дата и время последней модификации файла
· Код циклического контроля для файла, используемый для проверки целостности архива
Любой из архивов имеет свою шкалу степени сжатия. Чаще всего можно встретить следующую градацию методов сжатия:
· Без сжатия (соответствует обычному копированию файлов в архив без сжатия)
· Быстрый (характеризуется самым быстрым, но наименее плотным сжатием)
· Максимальный (максимально возможное сжатие является одновременно и самым медленным методом сжатия)
Лучше всего архивируются графические файлы в формате .bmp, документы MS Office и Web-страницы.
Что такое архиваторы?
Архиваторы – это программы (комплекс программ) выполняющие сжатие и восстановление сжатых файлов в первоначальном виде. Процесс сжатия файлов называется архивированием. Процесс восстановления сжатых файлов – разархивированием. Современные архиваторы отличаются используемыми алгоритмами, скоростью работы, степенью сжатия (WinZip 9.0, WinAce 2.5, PowerArchiver 2003 v.8.70, 7Zip 3.13, WinRAR 3.30, WinRAR 3.70 RU).
Другие названия архиваторов: утилиты - упаковщики, программы - упаковщики, служебные программы, позволяющие помещать копии файлов в сжатом виде в архивный файл.
В ОС MS DOS существуют архиваторы, но они работают только в режиме командной строки. Это программы PKZIP и PKUNZIP, программа архиватора ARJ. Современные архиваторы обеспечивают графический пользовательский интерфейс и сохранили командную строку. В настоящее время лучшим архиватором для Windows является архиватор WinRAR.
Как уважаемый хабрапользователь наверняка знает, «драйвер устройства» — это компьютерная программа управляющая строго определенным типом устройства, подключенным к или входящим в состав любого настольного или переносного компьютера.
Основная задача любого драйвера – это предоставление софтового интерфейса для управления устройством, с помощью которого операционная система и другие компьютерные программы получают доступ к функциям данного устройства, «не зная» как конкретно оно используется и работает.
Обычно драйвер общается с устройством через шину или коммуникационную подсистему, к которой подключено непосредственное устройство. Когда программа вызывает процедуру (очередность операций) драйвера – он направляет команды на само устройство. Как только устройство выполнило процедуру («рутину»), данные посылаются обратно в драйвер и уже оттуда в ОС.
Любой драйвер является зависимым от самого устройства и специфичен для каждой операционной системы. Обычно драйверы предоставляют схему прерывания для обработки асинхронных процедур в интерфейсе, зависимом от времени ее исполнения.
Любая операционная система обладает «картой устройств» (которую мы видим в диспетчере устройств), для каждого из которых необходим специфический драйвер. Исключения составляют лишь центральный процессор и оперативная память, которой управляет непосредственно ОС. Для всего остального нужен драйвер, который переводит команды операционной системы в последовательность прерываний – пресловутый «двоичный код».
Как работает драйвер и для чего он нужен?
Основное назначение драйвера – это упрощение процесса программирования работы с устройством.
Он служит «переводчиком» между хардовым (железным) интерфейсом и приложениями или операционными системами, которые их используют. Разработчики могут писать, с помощью драйверов, высокоуровневые приложения и программы не вдаваясь в подробности низкоуровневого функционала каждого из необходимых устройств в отдельности.
Как уже упоминалось, драйвер специфичен для каждого устройства. Он «понимает» все операции, которые устройство может выполнять, а также протокол, с помощью которого происходит взаимодействие между софтовой и железной частью. И, естественно, управляется операционной системой, в которой выполняет конкретной приложение либо отдельная функция самой ОС («печать с помощью принтера»).
Если вы хотите отформатировать жесткий диск, то, упрощенно, этот процесс выглядит следующим образом и имеет определенную последовательность: (1) сначала ОС отправляет команду в драйвер устройства используя команду, которую понимает и драйвер, и операционная система. (2) После этого драйвер конкретного устройства переводит команду в формат, который понимает уже только устройство. (3) Жесткий диск форматирует себя, возвращает результат драйверу, который уже впоследствии переводит эту команду на «язык» операционной системы и выдает результат её пользователю (4).
Как создается драйвер устройства
Для каждого устройства существует свой строгий порядок выполнения команд, называемой «инструкцией». Не зная инструкцию к устройству, невозможно написать для него драйвер, так как низкоуровневые машинные команды являются двоичным кодом (прерываниями) которые на выходе отправляют в драйвер результат, полученный в ходе выполнения этой самой инструкции.
При создании драйвера для Линукса, вам необходимо знать не только тип шины и ее адрес, но и схематику самого устройства, а также весь набор электрических прерываний, в ходе исполнения которых устройство отдает результат драйверу.
Написание любого драйвера начинается с его «скелета» — то есть самых основных команд вроде «включения/выключения» и заканчивая специфическими для данного устройства параметрами.
И чем драйвер не является
Часто драйвер устройства сравнивается с другими программами, выполняющими роль «посредника» между софтом и/или железом. Для того, чтобы расставить точки над «i», уточняем:
- Драйвер не является интерпретатором, так как не исполняется напрямую в софтовом слое приложения или операционной системы.
- Драйвер не является компилятором, так как не переводит команды из одного софтового слоя в другой, такой же.
Ну и на правах рекламы – вы всегда знаете, где скачать новейшие драйвера для любых устройств под ОС Windows.
Читайте также: