当前位置: 代码迷 >> C语言 >> 各位达人,如果要访问0xffff,ff90的值,C语言怎么做?谢谢!
  详细解决方案

各位达人,如果要访问0xffff,ff90的值,C语言怎么做?谢谢!

热度:967   发布时间:2008-04-24 10:50:53.0
自己处理可以参看
http://vip.6to23.com/NowCan1/tech/NTMEM.htm
建议使用winio 或者DDK
----------------解决方案--------------------------------------------------------
谢谢,谢谢,不过看起来比较复杂。
----------------解决方案--------------------------------------------------------
顶 顶 顶 顶
----------------解决方案--------------------------------------------------------
(*void(*)())0xffff;不知道可不可以
如果调用这里的例程(*(void (*)())0xffff)();不知道你想对你的机器干吗....

[[it] 本帖最后由 c_acceleration 于 2008-4-28 17:24 编辑 [/it]]
----------------解决方案--------------------------------------------------------
这样就可以了,不过只能访问1M一下的。
unsigned char far * pMem = (unsigned char far *)0xf000ff00;
a=*pMem;
这样访问的是0xf000 * 10h + 0xff00= 0xfff00的地方。
a的值就是 0xfff00的值。
你可以用debug 看0xfff00的值。
c:\debug
d f000:ff00
就好了。
----------------解决方案--------------------------------------------------------
far针对实模式,保护模式的内存模型是flat。内存表是由操作系统维护的。要取得估计比较困难。在目前情况(XP和Vista)下,禁用了VXD对于实模式的访问,要做到这种功能估计更困难了……
问题在于,你读那地方干吗?
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]StarWing83[/un] 在 2008-4-29 17:42 的发言:[/bo]

far针对实模式,保护模式的内存模型是flat。内存表是由操作系统维护的。要取得估计比较困难。在目前情况(XP和Vista)下,禁用了VXD对于实模式的访问,要做到这种功能估计更困难了……
问题在于,你读那地方干吗? ...

当然是有用的,主要对一些memory map 做一下设置。
----------------解决方案--------------------------------------------------------
额……这样吗?可是……现在的32位程序里面,允许使用far这样的关键字么?别忘了32位程序,指针根本就是32位的,不会再分16位的段地址和16位的段偏移了……
----------------解决方案--------------------------------------------------------
谢谢提醒,
请问你有什么高招吗?
谢谢!
----------------解决方案--------------------------------------------------------