Программа для вызова API функций
Введение
Свыше 90 процентов настольных и портативных
компьютеров работают под управлением Windows. Консультант по Windows Джеффри
Рихтер считает, что «Microsoft Windows очень сложная операционная система. Она
включает столько всего и делает так много, что одному человеку просто не под
силу полностью разобраться в этой системе». Курсовая работа посвящена изучению
одного из разделов операционной системы.
Самые важные части операционной системы Windows
написаны на языке ассемблера. Поэтому операционную систему Windows нагляднее
изучать, используя именно этот язык. Язык ассемблера - это символическое
представление машинного языка. Все процессы в машине на самом низком,
аппаратном уровне приводятся в действие только командами (инструкциями)
машинного языка. Ассемблер может понадобиться для оптимизации кода программ,
написания драйверов, трансляторов, программирования некоторых внешних устройств
и т.п.
Что касается операционной системы Windows, то
здесь, как ни странно это прозвучит для некоторых программистов, программировать
на ассемблере гораздо легче, чем в операционной системе MS DOS, и ничуть не
сложнее чем на Си, и при этом получается компактный, эффективный и быстрый код.
При работе с языками высокого уровня теряются определенные алгоритмические
навыки. И процесс заходит всё дальше. Только ради повышения своего
профессионального уровня стоит заниматься программированием на ассемблере
Теоретическая часть
С 1991 года операционная система Windows,
созданная компанией Microsoft сменила несколько версий. За это время она
выпускалась и для 16-разрядных процессоров и для 32-разрядных. А сегодня уже
появились версии Windows для работы с 64-разрядными процессорами. Менялся не
только дизайн системы, но и принципы ее внутренней архитектуры. Неизменным по
сей день остается одно - наличие динамических библиотек (DLL), являющихся
основными поставщиками функций (Application Programming Interface - API) для
работы системы и приложений.
За время существования 32-разрядной Windows
функции API не изменились, меняется лишь их количество. Для удобства
разработчиков программы для Windows, все функции API разбиты на определенные
категории и находятся в соответствующих библиотеках динамической компоновки
(DLL). Вот не полный перечень таких библиотек, приведённый в таблице 1:
Таблица 1
Библиотека
|
Описание
|
kernel32.dll
|
Системные
функции низкого уровня. В этой библиотеке находятся функции управления
памятью, задачами, распределения ресурсов и т.д.
|
user32.dll
|
Функции,
управляющие работой Windows. В этой библиотеке находятся функции для работы с
сообщениями, меню, указателями мыши, курсорами, таймерами и большинство
других функций, не связанных с выводом на экран.
|
gdi32.dll
|
Библиотека
интерфейса графических устройств (GDI). Содержит функции, связанные с выводом
на устройства. В ней находится большинство функций рисования, работы с
контекстами устройств, метафайлами, координатами и шрифтами.
|
comdlg32.dll lz32.dll version32.dll
|
Эти
библиотеки обеспечивают дополнительные возможности, в том числе поддержку
стандартных диалоговых окон, сжатия файлов и контроля версий.
|
advapi32.dll
|
Библиотека
содержит функции для работы с реестром Windows и файлами инициализации (INI).
|
В
данной библиотеке содержатся функции для использования Internet и FTP.
|
netapi32.dll
|
Сетевые
функции Windows.
|
crypt32.dll cryptdll.dll cryptnet.dl
|
В
библиотеках содержатся криптографические функции и функции для работы с
крипто-провайдерами.
|
ntdll.dl
|
Иногда
в других библиотеках API функции всего лишь объявлены, а реализованы в данной
библиотеке, но с другим именем.
|
comctl32.dll
|
В
этой библиотеке реализован новый (усовершенствованный) набор управляющих
элементов Windows, в числе которых - иерархические списки и улучшенные
текстовые поля.
|
mapi32.dll
|
Содержит
функции для работы с электронной почтой.
|
odbc32.dll
|
Это
одна из dll, реализующих архитектуру ODBC (Open Database Connectivity).
Функции предоставляют API для работы с базами данных.
|
winmm.dll
|
Обеспечивает
доступ к мультимедиа.
|
Эти DLL находятся в системной папке Windows.
Есть API функции, которые были созданы во времена Windows 9x и которые не
работают на операционных системах семейства Windows NT.API развивается очень
быстро. Количество функций растет так быстро, что уследить за всеми новшествами
практически невозможно. Но, к счастью, это и не нужно. Чтобы профессионально
пользоваться Windows API, необязательно становиться знатоком во всех его
областях. Важно понять основные концепции использования, предоставляемых
Windows функций и научиться читать документацию по API.
Окно в Windows является объектом, занимающим
прямоугольный участок экрана. Даже если окно будет круглым, все равно оно
вписывается в ассоциированную с его контекстом прямоугольную область. Окно
может содержать другие окна, называемые дочерними. С каждым окном связанны
функциональные возможности, присущие только ему, либо имеющие общие для всех
окон особенности. Окно обладает рядом характеристик:
Атрибуты. Концепция окна отличается чрезвычайной
гибкостью, поэтому неудивительно, что окно обладает множеством атрибутов. Одни
относятся к внешнему виду окна (размер, позиция, видимость и т.д.); другие -
определяют поведение окна, способы обработки нажатий клавиш на клавиатуре и
кнопок мыши.
Сообщения. С каждым окном связана специальная
функция - функция окна (window function). В этой функции реализуется цикл
обработки сообщений, получаемых от различных источников. Самыми важными
являются сообщения самой операционной системы.
Функциональность. Каждое окно обладает
определенной функциональностью, присущей только этому классу окон, либо имеющей
общие черты с функциональностью других окон системы.
Реакция на сообщения также напрямую зависит от
класса окна. Например, только у класса Static имеется возможность обработки
сообщения STM_SETIMAGE, позволяющего ассоциировать с надписью какую-нибудь
картинку или иконку.
При использовании Windows API возможно увеличить
количество стилей и сообщений как класса в целом, так и отдельно взятого окна.
Для этих целей Windows API содержит ряд функций, предназначенных для
сабклассирования (для изменения одного отдельно взятого окна) и
суперклассирования (для изменения целого оконного класса).
Описание функций, использующихся в программах
Функция GetModuleHandle
function GetModuleHandle(ModuleName:
PChar): THandle;
Считывает описатель модуля.
Паpаметpы:: Имя модуля (заканчивающееся пустым
символом).
Возвpащаемое значение: в случае успешного
завеpшения - идентификатоp модуля; 0 - в пpотивном случае.
Функция находится в файле kernel32.dll.
Функция GetCommandLine
Извлекает командную строку для текущего
процесса.
Синтаксис:GetCommandLine(VOID)
Параметры:
У этой функции нет параметров.
Возвращаемые значения:
Величина возвращаемого значения - указатель на
строку командно строки для текущего процесса.
Функция ExitProcess
Заканчивает работу процесса и всех его потоков.
Синтаксис:ExitProcess
( UINT uExitCode );
Параметры:
Текущий пользователь
Вывод
В ходе данной курсовой работы были освещены
основы 32-битного программирования на языке Assembler для ОС WINDOWS.
В приведённой программе для вызова API функций
используется функция invoke, которая позволяет намного сократить текст
программы и делает программы на языке ассемблера похожими на программы на ЯВУ
Компилятор MASM32, ОС Windows 7 SP1.
функция программа invoke
Список литературы
«WinAPI
по-русски - справочник по функциям WinAPI»,URL
http://develab.narod.ru/api/06.htm#9, (дата обращения 23.04.14).
«Win32
API и ассемблер», URL http://www.ironahot.idknet.com/ (дата обращения
23.04.14).
«Динамически
подключаемая библиотека», URL
http://ru.wikipedia.org/wiki/%C4%E8%ED%E0%EC%E8%F7%E5%F1%EA%E8_%EF%EE%E4%EA%EB%FE%F7%E0%E5%EC%E0%FF_%E1%E8%E1%EB%E8%EE%F2%E5%EA%E0,
(дата обращения 23.04.14).
Пирогов
В. Ю. «Ассемблер для Windows» - М.: Издатель Молгачева С.В., 2002. -552 с., ил.