阅读:2236回复:2
关于MmGetPhysicalAddress()
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_w |
沙发#
发布于:2001-05-15 11:50
这种api有好几个。
|
|
|
板凳#
发布于:2001-05-16 08:38
那rayyang2000能不能把这样的API列一下呢? 也许对我等菜鸟会有帮助 |
|
|