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

关于MmGetPhysicalAddress()...

楼主#
更多 发布于:2001-05-15 09:40
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下).

最新喜欢:

jljjlj
游客

返回顶部