阅读:2333回复:3
如何访问内存地址
用VTOOLSD V3.0,读写内存地址,用什么函数?
|
|
最新喜欢:xiangs... |
沙发#
发布于:2001-07-04 16:22
是什么内存地址?
|
|
板凳#
发布于:2001-07-05 00:17
从内存物理地址到线性地址的转换工作:
在Windows 95 下。DDK, 用VMMCall MapPhysToLinear 来调用VxD 的系统服务MapPhysToLinear 进行地址映射;VtoolsD,中这个函数的定义:PVOID MapPhysToLinear( CONST VOID * PhysAddr, DWORD nBytes, DWORD Flags),PhysAddr为要映射的内存的物理地址的起始位置,nBytes 是内存区域的长度,Flags必须设置为0,返回值是这段物理地址映射的线性内存地址,如果指定的内存不能存取,函数将返回0xFFFFFFFF。返回指针(值)可以象普通的指针一样进行读写操作,而通过对这个指针的操作就可以实现对物理内存的读写。 在Windows NT。首先调用IoReportResourceUsage 请求使用设备的内存,然后调用HalTranslateBusAddress 转换与总线相关的内存为系统的物理内存地址,再使用MmMapIoSpace把设备的内存映射到虚拟空间。 9x下Since physical addresses do not move, the linear address returned by MapPhysToLinear service remains valid。 2000下在设备驱动卸出时调用MmUnmapIoSpace断开设备的内存和虚拟空间的连接。 |
|
|
地板#
发布于:2001-07-05 08:34
谢谢袁浩!
|
|