Программирование для защищенного режима 211

программного прерывания $31. Однако низкоуровневое программирование доступа к серверу менее эффективно, чем использование функций WinAPI, и в этой книге не рассматривается.

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 не загружает в память сегменты кода программы, а предоставляет копии только новые сегменты данных. Кроме того, копии используют ресурсы первого экземпляра в режиме разделяемой библиотеки. При работе в защищенном