| 
			 
					阅读:1329回复:5
				 
				如何实现从物理地址到虚拟地址的转换
					如何实现从物理地址到虚拟地址的转换?				 
							 | 
	|
					
						最新喜欢: | 
	
| 
			 沙发# 
								发布于: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				
			
					编译不过去,什么错误?				 
							 | 
	|
					
						
  |