社区
驱动开发/核心开发
帖子详情
如何在2000下面读写物理内存?
win98ddk
2003-04-03 04:22:26
我现在对一款pci卡进行开发,其中需要对pci的缓冲进行读写,在98下是0xDC000028的内存物理地址,这个数据是我从别人的程序里面反汇编来的,自己也编程在98下测试过了,的确可行。但是我在2000下面测试的时候,就出错了,看样子2000下面不能够读写物理地址,不知道你有什么好方法吗?
另外,2000下的pci内存缓存是不是和98一样呢?
...全文
79
10
打赏
收藏
如何在2000下面读写物理内存?
我现在对一款pci卡进行开发,其中需要对pci的缓冲进行读写,在98下是0xDC000028的内存物理地址,这个数据是我从别人的程序里面反汇编来的,自己也编程在98下测试过了,的确可行。但是我在2000下面测试的时候,就出错了,看样子2000下面不能够读写物理地址,不知道你有什么好方法吗? 另外,2000下的pci内存缓存是不是和98一样呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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得到虚拟地址,就可以写了.
为什么程序实际可用内存会远超
物理内存
?
上一步 CPU 已经找到页表项了,这里存储着物理地址,这才真正找到该虚拟地址所对应的物理页。虚拟地址的低 12 位,刚好可以对一页内的所有字节进行编码,所以我们用低 12 位来代表页内偏移。计算的公式是物理页的地址直接加上低 12 位。前面我们分析的是 32 位操作系统,那对于 64 位机器是不是有点不同呢?在 64 位的机器上,使用了 48 位的虚拟地址,所以它需要使用 4 级页表。它的结构与 32 位的 3 级页表是相似的,只是多了一级页目录,定位的过程也从 32 位的 4 步变成了 5 步。
Linux下直接
读写
物理地址内存
虚拟 转 物理地址 virt_to_phys( *addr ); 物理 转 虚拟地址 phys_to_virt( *addr ); ------------------------------------------------- Linux内核里提供的/dev/mem驱动,为我们
读写
内存物理地址,提供了一个渠道。
下面
讲述2种利用mem设备文件进行物理地址
读写
的方法,一种是设备驱动的
物理内存
与虚拟内存
物理内存
指的是计算机中实际存在的硬件内存,通常是指随机存取存储器(RAM)。它是计算机运行程序和存储数据的主要存储介质,具有高速
读写
的特点。特点有限性:
物理内存
的容量有限,受硬件成本和技术制约。高速性:与其他存储设备(如硬盘)相比,
物理内存
的
读写
速度更快。直接访问:CPU可以直接访问
物理内存
中的数据和指令。
物理内存
是计算机中实际存在的硬件内存,容量有限但访问速度快。而虚拟内存。
物理内存
和虚拟内存
我们都知道,直接从内存
读写
数据要比从硬盘
读写
数据快得多,因此更希望所有数据的读取和写入都在内存中完成,然而内存是有限的,这样就引出了
物理内存
与虚拟内存的概念。
物理内存
就是系统硬件提供的内存大小,是真正的内存。相对于
物理内存
,在 Linux 下还有一个虚拟内存的概念,虚拟内存是为了满足
物理内存
的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存。用作虚拟内存的磁盘空间被称为交换空间(又称swap 空间)。 作为
物理内存
的扩展,Linux 会在
物理内存
不足时,使用交换分区的虚拟内存,更详细地说,就是内核.
计算机操作系统——虚拟内存与
物理内存
虚拟内存与
物理内存
如何管理内存? 当多个程序同时运行时,如何让多个应用程序共同使用
物理内存
资源?有两种简单的方法: 使某一个应用程序独占所有的内存资源。一个程序要运行就将另一个程序的内存数据转存到硬盘中,使要运行的程序独占所有内存资源。 缺点:硬盘
读写
速度很慢(相对而言),如果应用程序频繁切换,必然会造成大量时间开销。 让每一个应用程序独占一部分内存资源。多个应用程序的数据,可以一直保存在内存中,避免了硬盘
读写
的时间开销。 缺点:无法保证不同应用程序内存之间 的隔离性,..
驱动开发/核心开发
21,619
社区成员
21,708
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章