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