dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:2236回复:2

关于MmGetPhysicalAddress()

楼主#
更多 发布于:2001-05-15 09:46
MmGetPhysicalAddress()能在98/2000下使用(wdm)
没办法,我的驱动里也要取得相关虚拟地址的物理地址,试一试MmGetPhysicalAddress(),
于是在使用之前作了一个实验:写一个简单的驱动(wdm),在程序里的头文件里声明
PHYSICAL_ADDRESS MmGetPhysicalAddress(PVOID);
在程序ControlDispatch里这样写的:
VirtualAddress = ExAllocatePool(PagedPool,1024);
if(VirtualAddress==NULL){...}
else{
RtlCopyMemory(VirtualAddress,"Hello World!",12);
PhysicalAddress = MmGetPhysicalAddress(VirtualAddress);
DbgPrint("PhysicalAddress is %0x\n\n ",PhysicalAddress);
}
运行时用softiced得到DbgPrint()输出的物理地址(0x19f080),
用softice的peek d 19f080命令,得到了:6c6c6548(Hell)
当然用peek d 19f084 ,得到了:6f57206f(o Wo)
...
连接时,在vc的集成环境里的project\setting...\link\general\Object/library modules加入
ntoskrnl.lib
...
实际的驱动经过客户多次测试(98/2000),现在没有问题出现
BTW:kmd也能在98下运行(在我的机器98下).
欢迎大家共同探讨,挖掘wdm.h没声明的能在wdm下运行的api

最新喜欢:

beni_wbeni_w
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-05-15 11:50
这种api有好几个。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
Iamme
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2005-10-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-05-16 08:38

那rayyang2000能不能把这样的API列一下呢?
也许对我等菜鸟会有帮助
Go,go ahead
游客

返回顶部