Составители:
которые загружаются в память только в тот момент, когда к ним происходит обращение,
т.е. при выполнении программы. Рассмотрим, как осуществляется механизм динамиче-
ской загрузки.
Динамическая загрузка обеспечивает ряд существенных преимуществ.
Во-первых, поскольку практически все программы используют 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-разрядную адресацию, то логично, что
целые типы данных (intergers) также объявлены 32-разрядными. Это означает, что пере-
менные типа int и unsigned будут иметь длину 32 бита, а не 16, как в Windows 3.1. Если
же необходимо использовать переменную или константу длиной 16 бит, они должны
быть объявлены как short (далее будет показано, что для этих типов определены незави-
симые typedef-имена.). Следовательно, при переносе программного кода из 16-разрядной
среды необходимо убедиться в правильности использования целочисленных элементов,
которые автоматически будут расширены до 32 битов, что может привести к появлению
побочных эффектов.
Другим следствием 32-разрядной адресации является то, что указатели больше не
нужно объявлять как near и far. Любой указатель может получить доступ к любому уча-
стку памяти. В Windows 9x константы near и far объявлены (с помощью директивы #de-
fine) пустыми.
Существенные изменения коснулись также функций API, которые работают с сим-
вольными строками. Внутренние механизмы Windows 9x (не полностью), NT и Windows
2000 используют символы в формате UNICODE (16-битное значение символов). Но
многие прикладные программы продолжают использовать ANSI (то есть стандарт, в ко-
тором каждый символ кодируется при помощи 8 бит). Чтобы решить эту проблему, каж-
дая функция, работающая со строками, реализована в двух вариантах. В первом вариан-
те в качестве аргумента воспринимается строка в формате ANSI (внутри функции эта
строка автоматически преобразуется в UNICODE). Второй вариант функции напрямую
работает со строками в формате UNICODE.
Одним из подмножеств API является GDI (Graphics Device Interfase – интерфейс
графического устройства). GDI – это та часть Windows, которая обеспечивает поддержку
аппаратно-независимой графики. Благодаря функциям GDI Windows-приложение может
выполняться на различных ПЭВМ.
30
которые загружаются в память только в тот момент, когда к ним происходит обращение,
т.е. при выполнении программы. Рассмотрим, как осуществляется механизм динамиче-
ской загрузки.
Динамическая загрузка обеспечивает ряд существенных преимуществ.
Во-первых, поскольку практически все программы используют 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-разрядную адресацию, то логично, что
целые типы данных (intergers) также объявлены 32-разрядными. Это означает, что пере-
менные типа int и unsigned будут иметь длину 32 бита, а не 16, как в Windows 3.1. Если
же необходимо использовать переменную или константу длиной 16 бит, они должны
быть объявлены как short (далее будет показано, что для этих типов определены незави-
симые typedef-имена.). Следовательно, при переносе программного кода из 16-разрядной
среды необходимо убедиться в правильности использования целочисленных элементов,
которые автоматически будут расширены до 32 битов, что может привести к появлению
побочных эффектов.
Другим следствием 32-разрядной адресации является то, что указатели больше не
нужно объявлять как near и far. Любой указатель может получить доступ к любому уча-
стку памяти. В Windows 9x константы near и far объявлены (с помощью директивы #de-
fine) пустыми.
Существенные изменения коснулись также функций API, которые работают с сим-
вольными строками. Внутренние механизмы Windows 9x (не полностью), NT и Windows
2000 используют символы в формате UNICODE (16-битное значение символов). Но
многие прикладные программы продолжают использовать ANSI (то есть стандарт, в ко-
тором каждый символ кодируется при помощи 8 бит). Чтобы решить эту проблему, каж-
дая функция, работающая со строками, реализована в двух вариантах. В первом вариан-
те в качестве аргумента воспринимается строка в формате ANSI (внутри функции эта
строка автоматически преобразуется в UNICODE). Второй вариант функции напрямую
работает со строками в формате UNICODE.
Одним из подмножеств API является GDI (Graphics Device Interfase – интерфейс
графического устройства). GDI – это та часть Windows, которая обеспечивает поддержку
аппаратно-независимой графики. Благодаря функциям GDI Windows-приложение может
выполняться на различных ПЭВМ.
30
Страницы
- « первая
- ‹ предыдущая
- …
- 26
- 27
- 28
- 29
- 30
- …
- следующая ›
- последняя »
