Системные вызовы в Windows

Я просто хочу спросить, я знаю, что стандартные системные вызовы в Linux сделаны международной инструкцией, указывающей в Таблицу векторов прерываний. Я предполагаю, что это подобно в Windows. Но, как Вы называете некоторые высокоуровневые определенные системные стандартные программы? Такой как, как Вы говорите Windows создавать окно? Я знаю, что это обрабатывается кодом в dll, но что на самом деле произошло на уровне ассемблерной инструкции? Стандартная программа в dll называет программное прерывание международной инструкцией или является там каким-либо другим подходом для обработки этого?Спасибо.

13
задан B.Gen.Jack.O.Neill 3 May 2010 в 15:22
поделиться

1 ответ

Выполнение вызова Win32 для создания окна на самом деле не связано с прерыванием. Клиентское приложение уже связано с .dll, которая предоставляет вызов, который предоставляет адрес для использования компоновщиком. Поскольку вы спрашиваете о различиях в механизме вызова, я ограничиваю обсуждение здесь теми вызовами Win32, которые доступны для любого приложения, в отличие от вызовов уровня ядра или драйверов устройств. На уровне языка ассемблера он будет таким же, как и любой другой вызов функции, поскольку большинство вызовов Win32 являются вызовами уровня пользователя, которые внутренне выполняют необходимые вызовы ядра. Компоновщик предоставляет адрес функции Win32 в качестве цели для некоторой инструкции ветвления, специфика будет зависеть от компилятора.

[Edit] Похоже, вы правы насчет прерываний и int. векторная таблица. На CodeGuru есть хорошая статья с подробностями об ОС о том, как работают вызовы ядра NT. Ссылка:
http://www.codeguru.com/cpp/wp/system/devicedriverdevelopment/article.php/c8035

7
ответ дан 2 December 2019 в 01:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: