TURBO PASCAL |
Новости
|
9.2. МОДУЛЬ WINAPIРасширитель RTM с помощью средств модуля WinAPI реализует '.од множество интерфейса Windows для прикладных программ. Это означает, что некоторые возможности, используемые Windows— программами, становятся доступными также программе в защищенном режиме. Прежде всего это касается так называемых динамически подключаемых библиотек DLL (Dynamic—Link Library]. DLL—библиотеки подобно TPU— файлам хранят откомпилированные и готовые к использованию подпрограммы, но в отличие от модулей Турбо Паскаля они не связываются компоновщиком с телом программы, а существуют в виде отдельных дисковых файлов. При обращении к той или иной подпрограмме DLL расширитель проверяет ее наличие в оперативной памяти и при необходимости считывает библиотеку с диска. Отработавшая библиотека может удаляться из оперативной памяти, чтобы освободить место другой библиотеке или загружаемому с диска сегменту. Интерфейс взаимодействия программы с библиотекой в точности соответствует принятому в Windows, что, с одной стороны, открывает программе доступ к уже существующим в Windows библиотекам, а с другой стороны, позволяет программисту готовить собственные DLL— библиотеки для использования в защищенном режиме и/или в Windows (техника создания DLL — библиотек обсуждается в п.9.3). Другой особенностью модуля WinAPI является включение в него Windows— средств работы с ресурсами. • Ресурсы — это специальным образом откомпилированные двоичные файлы, которые содержат данные и которые на этапе компоновки пристыковываются к исполняемому файлу программы. Обычно в ресурсах хранятся различного рода изображения (пиктограммы, курсоры, рисунки и т.п.), используемые Windows— программой для создания графического экрана. При работе в защищенном режиме программе недоступны мощные графические возможности Windows и поэтому нет смысла хранить в ресурсах графические образы. В связи с этим в WinAPI включены ограниченные средства доступа к ресурсам: с их помощью можно получить только строковые ресурсы и ресурсы, определяемым пользователем. Многие из рассматриваемых ниже подпрограмм используют так называемый экземпляр программы — специальный дескриптор (Instance), связанный с текущей программой. Необходимость в этом дескрипторе вытекает из многозадачности Windows, под управлением которой одновременно может выполняться несколько программ, в том числе — несколько копий одной и той же программы. Экземпляр программы определяет, является ли данная программа единственной или в оперативной памяти существуют ее копии. В последнем случае Windows не загружает в память сегменты кода программы, а предоставляет копии только новые сегменты данных. Кроме того, копии используют ресурсы первого экземпляра в режиме разделяемой библиотеки. При работе в защищенном режиме расширитель RTM создает для программы дескприптор экземпляра и помещает его в переменную hinstance системного модуля System. И последнее замечание, прежде чем мы перейдем к рассмотрению средств модуля WinAPI. Windows— программа имеет доступ к двум кучам — к локальной и к глобальной. Локальная куча имеет небольшой размер и принадлежит только данному экземпляру программы. Глобальная куча — это вся свободная в данный момент память. В защищенном режиме нет локальной кучи, поэтому модуль WinAPI содержит средства работы только с глобальной кучей (функции GIobaIXXXX). В следующей таблице перечислены процедуры и функции модуля WinAPI.
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |