不同平台API的实现
好的,这基本上就是在所有不同操作系统上运行的任何非默认操作系统 API。但对于我的示例,让我们考虑 Windows 平台、API SDL(简单 DirectMedia 层)。
事实上,当我阅读有关 SDL 的文章时,我就想到了这个问题。最初,我认为在 Windows(以及基本上任何其他操作系统)上,您必须使用操作系统 API 来执行某些操作,例如写入屏幕、创建窗口等,因为该 API 知道内核调用和系统子例程调用它必须执行的操作。但是当我读到 SDL 时,我感到很惊讶,因为,你不能让计算机做操作系统以外的任何事情,因为你不能直接访问硬件,只能通过操作系统 API,从控制台分配到 DirectX。
所以,我的问题实际上是,这个非默认操作系统 API 是如何工作的?他们是否使用(包装)原始系统API(如MFC包装win32 api)?或者,他们实际上可以直接访问 Windows 内核吗?或者中间还有第三条路吗?
OK, this is basically just about any non-default OS API running on all different OS. But for my example let´s consider platform Windows, API SDL (Simple DirectMedia Layer).
Actually this question came to my mind when I was reading about SDL. Originally, I thought that on Windows (and basically any other OS) you must use OS API to make certain actions, like writing to screen, creating window and so on, because that API knows what kernel calls and system subroutines calls it has to do. But when I read about SDL, I surprised me, because, you cannot make computer to do anything more than OS can, since you cannot access HW directly, only thru OS API, from Console allocation to DirectX.
So, my question actually is, how does this not-default-OS APIs work? Do they use (wrap) original system API (like MFC wraps win32 api)? Or, do they actually have direct access to Windows kernel? Or is there any third, way in between?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
事实上,SDL 是特定于操作系统的调用的包装器,尽管具有许多简化和便利的功能。在 Windows 上,SDL 使用 DirectX。
Indeed, SDL is a wrapper for OS-specific calls, although with many simplifications and convenience functions. On Windows, SDL uses DirectX.