Автор работы: Пользователь скрыл имя, 25 Марта 2014 в 14:49, лекция
Конспект лекций содержит описание технологии системного программирования под Windows с использованием функций Win32 API. В первой части конспекта лекций рассмотрены особенности архитектуры ОС Windows, специфика интерфейса прикладного программирования Win32, структура приложений для Windows. Подробно рассмотрены API функции и основные структуры данных для работы с дисками, каталогами, файлами. Отдельная глава посвящена структурной обработке исключений SEH.
Системное программирование в среде Win32
Конспект лекций
Часть 1
Екатеринбург 2004
УДК 681.3.06
ББК 32.973.26
Рецензенты: доц. канд. техн. наук Язовский А.А., доц. канд. техн. наук Дружинина О.Г.
Научный редактор проф. доктор. техн. наук Л.Г. Доросинский
Составитель: Н.Г. Саблина
Системное программирование в среде Win32: Конспект лекций. Ч.1. / Н.Г. Саблина. Екатеринбург: «Изд-во УМЦ-УПИ», 2004. 108 с.
Конспект лекций содержит описание технологии системного программирования под Windows с использованием функций Win32 API. В первой части конспекта лекций рассмотрены особенности архитектуры ОС Windows, специфика интерфейса прикладного программирования Win32, структура приложений для Windows. Подробно рассмотрены API функции и основные структуры данных для работы с дисками, каталогами, файлами. Отдельная глава посвящена структурной обработке исключений SEH.
Примеры, приведенные в конспекте, реализованы на языке Си/С++.
Конспект лекций предназначен для студентов дистанционной технологии обучения специальностей 210100 - Управление и информатика в технических системах, 220100 – Автоматизированные системы обработки информации и управления, 201200 – Средства связи с подвижными объектами, изучающих дисциплины «Системное программное обеспечение», «Системное программирование».
Библиогр.: 11 назв. Рис. 3. Табл. 7. Прил.
Подготовлено кафедрой «Радиоэлектронные и телекоммуникационные системы».
ООО «Издательство УМЦ-УПИ», 2004
Термин системное программное обеспечение (System Software) означает программы и комплексы программ, являющиеся общими для всех, кто совместно использует технические средства компьютера, и применяемые как для автоматизации разработки (создания) новых программ, так и для организации выполнения программ существующих. С этих позиций системное программное обеспечение может быть разделено на следующие пять групп:
Рассмотрим вкратце эти группы системных программ.
Какой бы язык программирования вы не выбрали для создания приложений, работающих под управлением Windows, очевидно, что базой является Windows API (Application Programming Interface - интерфейс прикладного программирования), и, освоив его, можно писать программы любой сложности, используя все возможности, предоставляемые операционной системой.
Интерфейс прикладного программирования – API - это набор необходимых функций, при помощи которых любое приложение может взаимодействовать с операционной системой. Масштаб Win32 API впечатляет, он содержит несколько тысяч функций и несколько сотен сообщений, макросов и переопределенных констант. Исчерпывающая информация о Win32 находится в справочной системе Platform Software Development Kit, которая в частности находится на компакт-дисках MSDN Library (входит обычно в состав дистрибутива Microsoft Visual Studio).
Win32 API, как и его предшественники, в основном состоит из трех компонентов: Kernel (обеспечивают интерфейс с базовой операционной системой), User (обеспечивают управление окнами и приложениями) и GDI (Grafics Device Interface — интерфейс графических устройств), которые поддерживают графику.
Рис. 1.1. Категории API
Другие категории: мультимедиа, RPC (Remote Procedure Calls – вызовы удаленных процедур).
Эти объекты используются системой и пользовательскими приложениями для управления множеством самых разных ресурсов: процессами, потоками, файлами и т.д. Windows позволяет создавать и оперировать с несколькими типами таких объектов, в том числе:
Таблица 1.1
Kernel object |
Объект ядра |
Kernel object |
Объект ядра |
Access token |
Маркер доступа |
Module |
Подгружаемый модуль (DLL) |
Change notification |
Уведомление об изменениях на диске |
Mutex |
Мьютекс |
I/O completion ports |
Порт завершения ввода-вывода |
Pipe |
Канал |
Event |
Событие |
Process |
Процесс |
File |
Файл |
Semaphore |
Семафор |
File mapping |
Проекция файла |
Socket |
Сокет |
Heap |
Куча |
Thread |
Поток |
Job |
Задание |
Timer |
Ожидаемый таймер |
Mailslot |
Почтовый слот |
Объекты ядра создаются Windows-функциями. Каждый объект ядра это, по сути, структура (блок памяти), созданная ядром и доступная только ему. Поскольку структуры объектов ядра доступны только ядру, пользовательское приложение не может самостоятельно найти эти структуры в памяти и напрямую модифицировать их содержимое. Такое ограничение фирма Microsoft ввела намеренно, чтобы ни одна программа не нарушила целостность структур объектов ядра. Это ограничение позволяет Microsoft вводить, убирать или изменять элементы структур, не нарушая работы каких-либо приложений.
Объекты ядра принадлежат ядру, а не процессу. Если некоторый процесс вызывает функцию, создающую объект ядра, а затем завершается, объект ядра может остаться не разрушенным. Так будет в том случае, если этот объект ядра используется другим процессом. Ядро запретит разрушение объекта ядра до тех пор, пока он используется хотя бы одним процессом.
Ядру известно, сколько процессов используют конкретный объект ядра, поскольку в каждом объекте есть счетчик числа его пользователей. Этот счетчик – один из элементов данных, общих для всех типов объектов ядра. В момент создания объекта счетчику присваивается 1. Когда к существующему объекту ядра обращается другой процесс, счетчик увеличивается на 1. А когда какой-то процесс завершается, счетчики всех используемых им объектов ядра автоматически уменьшаются на 1. Как только счетчик какого-либо объекта обнуляется, ядро уничтожает этот объект.
Объекты ядра можно защитить, используя дескриптор защиты (security descriptor), который описывает, кто создал объект и кто имеет права на доступ к нему. Дескрипторы защиты используются при написании серверных приложений; создавая клиентское приложение, можно игнорировать это свойство объектов ядра.
В пользовательское приложение передается только описатель (handle) объекта, а управлять объектом ядра можно с помощью функций Win32 API.
API Win32 поддерживается семейством 32-разрядных операционных систем компании Microsoft: Windows 2000, Windows NT, Windows 98, Windows 95 и Windows СЕ. API Win32, как и API любой другой операционной системы, имеет собственный набор соглашений и методов программирования, базирующихся на философии Windows.
Основная проблема, с которой сталкивается программист, начиная работать в некоторой операционной системе, состоит в понимании фундаментальных принципов и моделей, включенных в ее архитектуру.
Win32 обеспечивает
возможности операционной
API Win32 поддерживает
все эти функции и
Изначально разработчики операционной системы Windows стремились обеспечить как можно более полную независимость программ от аппаратуры. С каждой новой версией прямой доступ к аппаратным компонентам применялся все реже и, наконец, стал использоваться только ядром операционной системы и драйверами. Это потребовало универсализации многих операций, например, вывода графической информации на экран, принтер и т.п., доступа к таким разным объектам, как файлы и коммуникационные порты.
Графический интерфейс, большой набор разнообразных элементов управления, расширяющийся с каждой новой версией, обеспечивает унифицированный интерфейс приложений с пользователем, что существенно облегчает обучение работе с новым программным обеспечением.
Практически с самого начала в составе Windows имелись средства, обеспечивающие обмен данными между приложениями, самое простое из них – буфер обмена (clipboard). Кроме этого фирмой Microsoft разработаны и другие механизмы обмена данными, которые постоянно ею развиваются: динамический обмен данными (Dynamic Data Exchange, DDE), связывание и внедрение объектов (Object Linking and Embedding, OLE).
Каждая следующая версия Windows создавалась так, чтобы она была совместима с более ранними, а также с MS DOS.
Информация о работе Системное программирование в среде Win32