如何在2000下面读写物理内存?

win98ddk 2003-04-03 04:22:26
我现在对一款pci卡进行开发,其中需要对pci的缓冲进行读写,在98下是0xDC000028的内存物理地址,这个数据是我从别人的程序里面反汇编来的,自己也编程在98下测试过了,的确可行。但是我在2000下面测试的时候,就出错了,看样子2000下面不能够读写物理地址,不知道你有什么好方法吗?
另外,2000下的pci内存缓存是不是和98一样呢?
...全文
65 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
programmer200x 2003-05-21
  • 打赏
  • 举报
回复
希望得到更详细一点的答案。
vcmfc 2003-04-08
  • 打赏
  • 举报
回复
to 2in98ddk:我不是告诉你了吗!,你试过吗?


真受不了。
danielxuao 2003-04-07
  • 打赏
  • 举报
回复
不会阿,可以读写的阿,我用
transferPacket = (PHID_XFER_PACKET)Irp->UserBuffer;
RtlCopyMemory(。。。)可以读写的阿,你用的是什么语句阿?
win98ddk 2003-04-07
  • 打赏
  • 举报
回复
Win98下面很好办,先将物理地址转化为线性地址,然后直接访问就可以了,我用VB都可以做得到,但是Win2000下面不好办了,物理地址0x80000000以上的都是驱动程序的区域,是系统保护的,你想访问它,首先就被win2000关掉你的应用程序了!!!
win98ddk 2003-04-07
  • 打赏
  • 举报
回复
你是在Ring0的吗?那里应该可以读写的,但是我要用Ring3来读写他,就必须绕过Winnt的包围了,才可以到达巴格达.
atm2001 2003-04-06
  • 打赏
  • 举报
回复

MiniMmGetPhysicalAddress proc virtualaddress:dword
mov eax,virtualaddress
cmp eax,80000000h
jb @f
cmp eax,0a0000000h
jae @f
and eax,1FFFF000h
ret
@@:
mov eax,0
ret
MiniMmGetPhysicalAddress endp




vcmfc 2003-04-06
  • 打赏
  • 举报
回复
设备名:\\\\.\\PhysicalMemory
vcmfc 2003-04-06
  • 打赏
  • 举报
回复
WIN 32API用CreateFile把内存设备打开,直接读写。
win98ddk 2003-04-05
  • 打赏
  • 举报
回复
MmGetPhysicalAddress是不是Win32 API 里面的啊,它的含义是什么?
cat_dog 2003-04-04
  • 打赏
  • 举报
回复
用MmGetPhysicalAddress得到虚拟地址,就可以写了.

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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