在Windows上进行系统调用

我只想问一下,我知道在Linux中的非标准系统调用是通过int指令指向中断向量表来完成的。 我认为这是类似于Windows。 但是,你怎么称呼一些更高层次的具体系统例程呢? 比如你如何告诉Windows创build一个窗口? 我知道这是由DLL中的代码处理,但实际发生在汇编指令级别? dll中的例程是否通过int指令调用软件中断,或者有什么不同的方法来处理? 谢谢。

Solutions Collecting From Web of "在Windows上进行系统调用"

进行Win32调用来创建一个窗口并不涉及到一个中断。 客户端应用程序已经链接到提供调用的.dll文件中,链接器使用该地址。 既然你在问关于调用机制的区别,我将这里的讨论局限于任何应用程序可用的Win32调用,而不是内核级调用或设备驱动程序。 在汇编语言级别,它将与任何其他函数调用相同,因为大多数Win32调用都是在内部进行所需的内核调用的用户级调用。 链接器提供Win32函数的地址作为某种分支指令的目标,具体取决于编译器。

[编辑]看起来你是正确的关于中断和整数。 矢量表。 CodeGuru有关于NT内核调用如何工作的操作系统细节的一篇很好的文章。 链接:
http://www.codeguru.com/cpp/wp/system/devicedriverdevelopment/article.php/c8035

Win32 API是以用户模式运行的一个层(环3)。 Windows曾经也支持OS / 2和POSIX API层,但是它们被废弃并被删除。 窗口管理器是纯粹的用户模式代码,不涉及内核调用。 只有使用内核资源(CreateThread,VirtualAlloc等)的API调用会调用“真实”操作系统(ntdll.dll),并通过软件中断(int 0x2e)陷入到环0中。