阅读:3739回复:0
关于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下). |
|
最新喜欢:jlj |