Вопрос № 21959: Добрый день :)!!! Излагал как мог!!! Извините за абрукадабру:)
А всётаки как же эти все функции(winapi) работают, т.е. я имею ввиду скажим в досе есть прерывания с множеством функций а в винде как происходит там тоже есть прерывания и вот ети сам...
Вопрос № 21.959
Добрый день :)!!! Излагал как мог!!! Извините за абрукадабру:)
А всётаки как же эти все функции(winapi) работают, т.е. я имею ввиду скажим в досе есть прерывания с множеством функций а в винде как происходит там тоже есть прерывания и вот ети самые функции(winapi) чтоли????
Возмём самую простую функцию MessageBoxA которая выводит сообщение ето понятно но как она выводит т.е. на самом низком уровне и где она берёт все эти стандартные окна они что где то в библиотеках чтоли????
В библиотеках есть функции но как по средсвом чего винда их понимает
те при компиляции/???
Спасибо!
Отправлен: 09.06.2005, 09:04
Вопрос задал: PRiSon (статус: Посетитель)
Всего ответов отправлено: 5
Отвечает: Jadd
Здравствуйте, PRiSon!
MessageBoxA - такое же окно, как и все другие. Только при создании в структуре, описывающей окно, передаются флаги диалога. В винде на пользовательском уровне все прерывания скрыты от пользователя. Это прерогатива 0-го кольца. А для вывода графики используется графическая подсистема. Вообщем отправляю тебя к книге "Программирование графики для Windows". Эта книга специализированна на GDI и DirectX, но там в начале рассказывается суть и структура подсистем винды. А еще хороша книга Марка Русиновича
про внутреннее "убранство" винды. Читай.
--------- Hakuna matata
Ответ отправил: Jadd (статус: 9-ый класс)
Отправлен: 09.06.2005, 10:16
Отвечает: Denisss
Здравствуйте, PRiSon!
Функции WinAPI работают очень просто:
В установленной Windows (обычно в папке system32) лежат те самые WinAPI библиотеки (обычно это *32.dll). Каждая библиотека имеет таблицу экспорта (ее можно увидеть с помощью различных программ, например, с помощью PeTools, PeExplorer, PEEditor и др.). Таблица экспорта - перечень имен функций, доступных для других программ. Чтобы обратиться к этой функции, нужно знать ее описание (например, см. в приложении описание для MessageBox). Наиболее подробное описание WinAPI функций можно найти в MSDN.
Приложение:
Ответ отправил: Denisss (статус: 4-ый класс)
Отправлен: 09.06.2005, 11:09
Отвечает: Гриценко Юрий Алексеевич
Здравствуйте, PRiSon!
Тут всёс достаточно просто: функции API являются посредниками между системными библиотеками, аппаратной начинкой, ядром системы и программистом. Т.к. на самом низком уровне(ассемблер, прерывания и пр.) руководит исключительно ОС тем самым облегчая программисту работу. А кстати все эти функции действительно находятся в СИСТЕМНЫХ библиотеках винды, которые постоянно висят в памяти, а откомпилиная программа только ВЫЗЫВАЕТ их. А прототипы описаны в заголовочных файлах.
А чтобы было легче понять работу функций типа MessageBoxA надо всопнить, что любое окно Win32 - это по сути только ОДНА ФУНКЦИЯ WndProc, а функцию как известно можно хранить в библиотеке и вызывать при необходимости(остальные вещи вроде регистрации окна операционка как раз и делает в этой функции MessageBoxA).
--------- Программирование - не способ заработка, а спсоб по-иному взглянуть на мир.
Отвечает: John Freeman
Здравствуйте, PRiSon!
В Windows есть форматы exe файла, у PE/NE/LE файла есть Import Directory, по именам библиотек и именам функций в Import Directory заполняется область Import Table адресами этих функций, после чего(У IAT адрес уже фиксированный) можно вызывать по порядковому номеру из IAT call'ом, обычно составляет Import Dir. компилятор.
--------- Время надирать задницы и жевать жвачку. Чёрт, но у меня кончилась жвачка!!!
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 09.06.2005, 17:10 Оценка за ответ: 1
Отвечает: CJ
Здравствуйте, PRiSon!
Как винда понимает??? Так программисты из M$ специально создали такую удобную вещь программистам. Все функции беруться из системных библиотек Windows.
Ответ отправил: CJ (статус: Студент)
Отправлен: 09.06.2005, 17:47 Оценка за ответ: 1