Типы программ
Процессоры стандарта Intelмогут работать в трех основных режимах: реальный, виртуальный и защищенный. При включении компьютера его процессор работает в реальном режиме. После загрузки операционной системы (ОС) процессор может быть переключен программами ОС в другие режимы. В реальном и виртуальном режимах используется 16-битнаяадресацияс фиксированными сегментами по 64Кбайт. В защищенном режиме используется 32х-битнаяадресацияс неограниченными сегментами, и адрес к памяти формируется (на аппаратном уровне) с помощью дескрипторных таблиц, в которых задаются начальные адреса сегментов, их длина, и права доступа к памяти и к портам для процессов, которые их используют. Кроме того, в защищенном режиме реализовано аппаратное переключение между задачами с помощью специальных таблиц.
Особенности вызова функций api
Наиболее перспективным с точки зрения программирования является защищенный режим, потому что он использует все аппаратные возможности компьютера. Следовательно, функции API для Windows играют ту же роль, что и прерывание INT 21h для DOS в реальном или виртуальном режиме, но, отличия между ними достаточно существенны. Перечислим их:
Функции API не отменяют, а замещают программные прерывания. Механизм обработки аппаратных прерываний остается на уровне драйверов устройств;
Стандарт вызова функций API основан на передаче параметров через стек (а не через регистры);
Значение каждой функции возвращается в регистре EAX. Если функция возвращает структуру данных, то регистр EAX содержит логический признак выполнения, а адрес структуры необходимо передать к функции как параметр;
Функции API работают в защищенном режиме процессора, а прерывание DOS - в реальном или виртуальном режиме.
Функции APIсохраняются в разных библиотеках динамической компоновки, которые находятся в файлах с расширениемDLL, например,kernel32.dll,user32.dll,gdi32.dllи др. Эти файлы находятся в системном каталогеWindows(например, "C:\Windows\System"). В случае необходимости, программист может создатьDLL-файл с набором своих функций.
Программы Windowsобращаются к функциямAPIс помощью команд аппаратного вызоваCALL, например:callMessageBoxA, гдеMessageBoxA- 32х-битныеадреса функции. Именно это название функции фигурирует в файлеuser32.dll(посмотрите редактором этот файл).
Дескрипторы
Независимо от своего типа, любой объект в Windowsидентифицируется своим дескриптором, или описателем. Оба этих названия являются переводом терминаhandle(хэндл). Дескриптор – это своего рода ссылка на объект. Хендлы идентифицируют окна, меню, блоки памяти, экземпляры программы, устройства вывода, файлы, аудио и видео потоки, и другие объекты.
Большинство дескрипторов являются значениями индексов внутренних таблиц, какие Windows использует для доступа и управления своими объектами. Конечно, программы пользователя в защищенном режиме не имеют прав доступа к этим таблицам. Поэтому, когда необходимо получить или изменить данные, которые связаны с определенным объектом Windows, используется соответствующая функция API с параметром хэндла этого объекта. Таким образом, Windows обеспечивает защиту своих данных при работе в многозадачном режиме.