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