阅读:1217回复:5
如何实现从物理地址到虚拟地址的转换
如何实现从物理地址到虚拟地址的转换?
|
|
最新喜欢:chinab... |
沙发#
发布于:2002-12-16 10:18
我在本站上看到过:
物理地址到虚拟地址就只有遍历了。 void PhysicalAddressToLinearAddress(ULONG pAddress) { unsigned int *pAddr; unsigned int *PageDirectoryEntry=(unsigned int *)0xC0300000; unsigned int *PageTableEntry=(unsigned int *)0xC0000000; int i,j; DbgPrint(\"\\n\"); for(i=0;i<1024;i++) if((PageDirectoryEntry&0xFFFFF000)&&(PageDirectoryEntry&0x00000001)) for(j=0;j<1024;j++){ pAddr=(int *)((int)PageTableEntry+i*4096+j*4); if((*pAddr)&0x00000001) if(((*pAddr)&0xFFFFF000)==(pAddress&0xFFFFF000)) DbgPrint(\"%08X\\n\", ((i*4*1024*1024+j*4*1024)&0xFFFFF000)|(pAddress&0x00000FFF)); } } 你试一下。 |
|
|
板凳#
发布于:2002-12-16 12:58
能不能用?
能用别忘给分哟。 |
|
|
地板#
发布于:2002-12-16 13:35
编译不过去,
我现在有一个 PHYSICAL_ADDRESS 类型的地址, 我想让 APP 程序可以操作它,那么我必须把这个 PHYSICAL_ADDRESS 的地址转换到 APP 地址 才行,我看有的程序中使用了 InitializeObjectAttributes ZwOpenSection ObReferenceObjectByHandle ZwMapViewOfSection 函数才得到这个地址, 我不明白为什么这样做, 有没有其它简单一点的方法 |
|
地下室#
发布于:2002-12-16 14:48
什么是物理地址和虚拟地址啊? :o
|
|
|
5楼#
发布于:2002-12-16 17:14
编译不过去,什么错误?
|
|
|