如何直接在Windows编程(保护模式)下访问前1 MB的RAM?
例如,要写入视频部分。
我可以使用DPMI解决所有问题吗?
答案 0 :(得分:3)
不,常规(=用户模式)应用程序无法直接访问物理地址空间(每个应用程序看到的地址空间是虚拟地址空间,由操作系统通过MMU管理)。拥有操作系统的重点是抽象硬件细节并向应用程序提供干净的编程接口,如果要在屏幕上绘图,则应使用Windows提供的图形库(GDI,DirectX)。
如果你编写一个在内核模式下运行的驱动程序,你可以访问几乎所有的硬件资源,但如果你不仔细遵循Windows内核模式编程的规则,你可能会做整个系统很快就崩溃了。
如果你在谈论视频RAM和DPMI,我想你是来自一些关于DOS式编程的书/教程(甚至根本没有任何操作系统);请记住,在任何现代操作系统的上下文中几乎没有任何内容适用,因为它不仅是您的代码正在运行,因此您必须合作并遵守规则/使用操作系统的API。