Я просто хочу спросить, я знаю, что стандартные системные вызовы в Linux сделаны международной инструкцией, указывающей в Таблицу векторов прерываний. Я предполагаю, что это подобно в Windows. Но, как Вы называете некоторые высокоуровневые определенные системные стандартные программы? Такой как, как Вы говорите Windows создавать окно? Я знаю, что это обрабатывается кодом в dll, но что на самом деле произошло на уровне ассемблерной инструкции? Стандартная программа в dll называет программное прерывание международной инструкцией или является там каким-либо другим подходом для обработки этого?Спасибо.
Выполнение вызова Win32 для создания окна на самом деле не связано с прерыванием. Клиентское приложение уже связано с .dll, которая предоставляет вызов, который предоставляет адрес для использования компоновщиком. Поскольку вы спрашиваете о различиях в механизме вызова, я ограничиваю обсуждение здесь теми вызовами Win32, которые доступны для любого приложения, в отличие от вызовов уровня ядра или драйверов устройств. На уровне языка ассемблера он будет таким же, как и любой другой вызов функции, поскольку большинство вызовов Win32 являются вызовами уровня пользователя, которые внутренне выполняют необходимые вызовы ядра. Компоновщик предоставляет адрес функции Win32 в качестве цели для некоторой инструкции ветвления, специфика будет зависеть от компилятора.
[Edit]
Похоже, вы правы насчет прерываний и int. векторная таблица. На CodeGuru есть хорошая статья с подробностями об ОС о том, как работают вызовы ядра NT. Ссылка:
http://www.codeguru.com/cpp/wp/system/devicedriverdevelopment/article.php/c8035