Основы программирования в Win32API. Марапулец Ю.В. - 7 стр.

UptoLike

Составители: 

Глава 1. ОСНОВЫ ПРОГРАММИРОВАНИЯ
В ОС СЕМЕЙСТВА WINDOWS
1.1. Базовые элементы ОС семейства Windows
Благодаря интерфейсу вызова функций в Windows доступ к системным
ресурсам осуществляется через целый ряд системных функций. Совокупность
таких функций называется прикладным программным интерфейсом, или API
(Application Programming Interfase). Для взаимодействия с Windows приложе-
ние запрашивает функции API, с помощью которых реализуются все необхо-
димые системные действия, такие как выделение памяти, вывод на экран, соз-
дание окон и т. п.
Поскольку API состоит из большого числа функций, может сложиться
впечатление, что при компиляции каждой программы, написанной для Win-
dows, к ней подключается код довольно значительного объема. В действитель-
ности это не так. Функции API содержатся в библиотеках динамической за-
грузки (Dynamic Link Libraries, или DLL), которые загружаются в память
в момент обращения, т. е. при выполнении программы.
Рассмотрим, как осуществляется механизм динамической загрузки, обес-
печивающей ряд существенных преимуществ.
Во-первых, поскольку практически все программы используют API-
функции, то благодаря DLL-библиотекам существенно экономится дисковое
пространство, которое в противном случае занималось бы большим количеством
повторяющегося кода, содержащегося в каждом из исполняемых файлов.
Во-вторых, изменения и улучшения в Windows-приложениях сводятся
к обновлению только содержимого DLL-библиотек. Уже существующие тек-
сты программ не требуют перекомпиляции.
В настоящее время наибольшее распространение получила версия API, кото-
рая имеет название Win32. Данная версия API пришла на смену версии Win16, ис-
пользуемой в Windows 3.1. Фактически 32-разрядная Win32, используемая
в операционных системах 9x, является надмножеством для Win16 (т. е. фактически
включает в себя этот интерфейс), так как большинство функций имеет то же на-
звание и применяется аналогичным образом. Однако, будучи в принципе похожи-
ми, оба интерфейса все же отличаются друг от друга. Win32 поддерживает
32-разрядную линейную адресацию, тогда как Win16 работает только с
16-разрядной сегментированной моделью памяти. Это привело к тому, что ряд
функций был модифицирован таким образом, чтобы принимать 32-разрядные ар-
гументы и возвращать 32-разрядные значения. Часть из них пришлось изменить с
учетом 32-разрядной архитектуры. Была реализована поддержка потоковой много-
задачности, новых элементов интерфейса и прочих нововведений Windows.
Так как Win32 поддерживает полностью 32-разрядную адресацию, то ло-
гично, что целые типы данных (integers) также объявлены 32-разрядными. Это
означает, что переменные типа int и unsigned будут иметь длину 32 бита, а не 16,
7
               Глава 1. ОСНОВЫ ПРОГРАММИРОВАНИЯ
                     В ОС СЕМЕЙСТВА WINDOWS


               1.1. Базовые элементы ОС семейства Windows

     Благодаря интерфейсу вызова функций в Windows доступ к системным
ресурсам осуществляется через целый ряд системных функций. Совокупность
таких функций называется прикладным программным интерфейсом, или API
(Application Programming Interfase). Для взаимодействия с Windows приложе-
ние запрашивает функции API, с помощью которых реализуются все необхо-
димые системные действия, такие как выделение памяти, вывод на экран, соз-
дание окон и т. п.
     Поскольку API состоит из большого числа функций, может сложиться
впечатление, что при компиляции каждой программы, написанной для Win-
dows, к ней подключается код довольно значительного объема. В действитель-
ности это не так. Функции API содержатся в библиотеках динамической за-
грузки (Dynamic Link Libraries, или DLL), которые загружаются в память
в момент обращения, т. е. при выполнении программы.
     Рассмотрим, как осуществляется механизм динамической загрузки, обес-
печивающей ряд существенных преимуществ.
     Во-первых, поскольку практически все программы используют API-
функции, то благодаря DLL-библиотекам существенно экономится дисковое
пространство, которое в противном случае занималось бы большим количеством
повторяющегося кода, содержащегося в каждом из исполняемых файлов.
     Во-вторых, изменения и улучшения в Windows-приложениях сводятся
к обновлению только содержимого DLL-библиотек. Уже существующие тек-
сты программ не требуют перекомпиляции.
     В настоящее время наибольшее распространение получила версия API, кото-
рая имеет название Win32. Данная версия API пришла на смену версии Win16, ис-
пользуемой в Windows 3.1. Фактически 32-разрядная Win32, используемая
в операционных системах 9x, является надмножеством для Win16 (т. е. фактически
включает в себя этот интерфейс), так как большинство функций имеет то же на-
звание и применяется аналогичным образом. Однако, будучи в принципе похожи-
ми, оба интерфейса все же отличаются друг от друга. Win32 поддерживает
32-разрядную линейную адресацию, тогда как Win16 работает только с
16-разрядной сегментированной моделью памяти. Это привело к тому, что ряд
функций был модифицирован таким образом, чтобы принимать 32-разрядные ар-
гументы и возвращать 32-разрядные значения. Часть из них пришлось изменить с
учетом 32-разрядной архитектуры. Была реализована поддержка потоковой много-
задачности, новых элементов интерфейса и прочих нововведений Windows.
     Так как Win32 поддерживает полностью 32-разрядную адресацию, то ло-
гично, что целые типы данных (integers) также объявлены 32-разрядными. Это
означает, что переменные типа int и unsigned будут иметь длину 32 бита, а не 16,

                                       7