
- •1.Операционные системы.
- •2 . Архитектура ос.
- •4. Страничная организация виртуальной памяти.
- •5. Стратегии вытеснения страниц
- •6. Совместный доступ к памяти
- •7. Основы api Win32. Примеры.
- •8.Вытесняющая многозадачность, планирование.
- •10. Создание потоков (нитей, threads) и управление потоками.
- •11. Классы для работы с потоками
- •12. Синхронизация потоков. Критические секции
- •В начале критической секции необходимо вызвать подпрограмму api
- •13. Объекты синхронизации и функции ожидания
- •Wait-функции
- •14. Семафоры, мьютексы, события
- •Семафор создается функцией
- •InitialCount: longint; // Начальное число потоков, // допущенных к объекту
- •4.4. События (Event)
7. Основы api Win32. Примеры.
Windows API(application programming interfaces — интерфейсы прикладного программирования) - набор базовых функций интерфейсов программирования приложений операционных систем семейства Windows. Они обеспечивают самое прямое взаимодействие приложений с Windows.
Объектом Windows называется структура данных, описывающая системный ресурс. Существует 3 категории объектов Windows:
1)Объекты категории users. Они используются для организации работы с пользователем(окна, кнопки...).
2)GDI(Graphic Device Interface) - это составная часть Win32 API, обеспечивающая графический вывод на устройства отображения информации, такие как дисплей или принтер.
3)Kernel — объекты ядра. К ним относятся процессы, потоки, файлы. Этими объектами оперирует ядро системы, а не пользователь.
Особенностью Windows программирования является то, что пользователь не имеет доступа к объектам, не знает адресов и указателей, а использует дескриптор, то есть адресация косвенная.
Дескриптор — целое число, идентифицирующее объект. Соотношение между объектом и адресом устанавливает систему, которая хранит в памяти таблицу дескрипторов. Большинство функций API принимают дескриптор в качестве одного из своих параметров.
Win32 API поддерживает вызовы свыше двух тысяч функций, которые можно использовать в приложениях. Все основные функции Windows объявлены в заголовочных файлах. Главным заголовочным файлом является windows.h. В этом файле содержится множество ссылок на другие заголовочные файлы. Вызовы функций Win32 API в программе осуществляются аналогично вызовам библиотечных функций C/C++. Основное различие заключается в том, что компоновщик связывает код библиотечных функций C/C++ с кодом программы на этапе компоновки (статическое связывание), в то время как для функций Windows это связывание откладывается и осуществляется только на этапе выполнения программы (динамическое связывание). Библиотеки динамической компоновки (DLL) содержатся в файлах с расширением .dll. Большая часть этих библиотек расположена в подкаталоге SYSTEM каталога установки Windows. С одной стороны это обеспечивает очень маленький объём Windows приложений, так как мы не храним функции, а лишь их адреса. С другой стороны появляется гарантия того, что все программы будут использоваться одни и те же версии функций.
В основе взаимодействия программы с внешним миром и с операционной системой лежит концепция сообщений. С точки зрения приложения, сообщение является уведомлением о том, что произошло некоторое событие, которое может требовать, а может и не требовать выполнения определенных действий. Это событие может быть следствием действий пользователя, например перемещения курсора или щелчка кнопкой мыши, изменения размеров окна или выбора пункта меню. Кроме того, событие может генерироваться приложением, а также операционной системой. Сообщение — это структура данных, содержащая следующие элементы:
1) дескриптор окна, которому адресовано сообщение;
2)код (номер) сообщения;
3)дополнительную информацию, зависящую от кода сообщения.
С момента старта операционная система создает в памяти глобальный объект, называемый системной очередью сообщений. Все сообщения, генерируемые как аппаратурой, так и приложениями, помещаются в эту очередь. Windows периодически опрашивает эту очередь и, если она не пуста, посылает очередное сообщение нужному адресату, определяемому при помощи дескриптора окна. Непременным компонентом всех Windows-приложений является цикл обработки сообщений. У приложения всегда есть главная функция WinMain. Обычно она содержит вызовы функций для инициализации и создания окон, после чего следует цикл обработки сообщений и необходимый код для закрытия приложения.
Оконный класс (window class), или класс окна — это структура, определяющая основные характеристики окна. К ним относятся стиль окна и связанные с окном ресурсы, такие как пиктограмма, курсор, меню и кисть для закрашивания фона. Кроме того, одно из полей структуры содержит адрес оконной процедуры, предназначенной для обработки сообщений, получаемых любым окном данного класса.
Любая Windows-программа должна иметь 3 секции:
1)Цикл ожидания сообщения
2)Оконная функция
3)Инициализация — создание структур и объектов, получение их дескрипторов.
Пример программы завершающей дочернее приложение:
var
H:tHandle;
begin
H:=FindWindow('SciCal','Калькулятор')l
if H<>0 then SendMessage(H,wm_close,0,0);
end;