Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 85
от 14.06.2005, 09:10

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 5


Вопрос № 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).
---------
Программирование - не способ заработка, а спсоб по-иному взглянуть на мир.
Ответ отправил: Гриценко Юрий Алексеевич (статус: 3-ий класс)
Отправлен: 09.06.2005, 11:44

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapifaq
Отписаться
Вспомнить пароль

В избранное