超难题!

wyl0502 2004-07-07 03:04:09
怎么用C/C++/汇编来读取物理内存中的内容,内存大小不是64K的那种,是64M以上的。还有怎么把特定的值存到特定地址的物理内存?
顺便一问:windows或其他平台下有没有API可以实现上述功能的?
...全文
303 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyl0502 2004-07-19
  • 打赏
  • 举报
回复
没有那个API,是缺页异常的处理程序,还不如去看一下linux源码呀。我想做的不是通过这个,因为这好像有点和乎台相关。我想看能否用一些硬件方面的程序实现~~
tuxw 2004-07-19
  • 打赏
  • 举报
回复
看到这种问题就条件反射地想到 WinIO,Windows 下自己做这些实在太麻烦了,还是捡现成的好 :)
cnxiaohai 2004-07-19
  • 打赏
  • 举报
回复
不难啊。。。。。

不过在WINDOWS下可能有些问题

建议你看看

《编程高手缄言》的第一章

你会有收获的
wyl0502 2004-07-09
  • 打赏
  • 举报
回复
Leaveye:
什么是活动页呀?怎么查找?找到了又怎么读呀?
Leaveye 2004-07-09
  • 打赏
  • 举报
回复
活动页,按我的理解,是操作系统对每个程序4G的内存进行管理的换页机制里,在物理内存中的逻辑页的提法。

要对某个任意内存地址的数据进行读写,首先要把哪个数据所在的页设为活动页。这个切换页的行为,我想该是操作系统绝对私有的行为了,但是,为了方便测试,该会有对其进行操作的接口,哪怕只是有接口的残骸呢。

只是,找到这个,就是一个方法和门路的问题了。

我试了在MSDN上找,可是没什么线索。
sandrowjw 2004-07-08
  • 打赏
  • 举报
回复
只有刚开机时候的flat模式可以访问物理内存,但是flat模式应该用的是16位地址线,没有支持到64m以上吧。
windows下面肯定不行。
jiang8360 2004-07-08
  • 打赏
  • 举报
回复
关注一下
Leaveye 2004-07-08
  • 打赏
  • 举报
回复
回复人: wyl0502() ( ) 信誉:100 2004-07-08 19:18:00 得分: 0


我想进入ring 0再看看4G里哪些是在物理内存中的,然后抒它们读出来,不行吗?


如果只是这个要求,你倒是可以尝试查找系统内存的活动页。
wyl0502 2004-07-08
  • 打赏
  • 举报
回复
我想进入ring 0再看看4G里哪些是在物理内存中的,然后抒它们读出来,不行吗?
sunjx119 2004-07-07
  • 打赏
  • 举报
回复
不能吧,windows的访问机制在那摆着……
xjp6688 2004-07-07
  • 打赏
  • 举报
回复
看看编程高手箴言那本书
北极猩猩 2004-07-07
  • 打赏
  • 举报
回复
在windows下通常的应用程序的寻址是虚拟地址,内存的读写是由操作系统控制的。
除非使用驱动程序的方式进入ring0去搞破坏才行。
不过,你为什么非要这样做呢?
Brradish 2004-07-07
  • 打赏
  • 举报
回复
另外补充~~DOS好像可以
Brradish 2004-07-07
  • 打赏
  • 举报
回复
windows的内存管理不准许你这么做吧~~~
我自己的想法~不确定.
mark一下 关注

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧