阅读:1646回复:5
ddk中有无函数能实现物理地址和线性地址的转换
ddk中有无函数能实现物理地址和线性地址的转换
|
|
沙发#
发布于:2003-03-07 18:16
是人家参考intel处理器的xx手册写的
|
|
|
板凳#
发布于:2003-03-05 21:03
一个是DDK实现的函数,一个是自己编程实现的。
|
|
地板#
发布于:2003-03-05 09:49
放分了,不过我还是有个问题,就是您这里写的和我一篇文章里看的好像不太一样啊,你能不能给个解释呢?
ULONG LinearAddressToPhysicalAddress(ULONG lAddress) { unsigned int *pAddr; unsigned int *PageDirectoryEntry=(unsigned int *)0xC0300000; unsigned int *PageTableEntry=(unsigned int *)0xC0000000; //判断页目录是否有效,第0位(P)为存在位,请参阅相关书籍 if((!(PageDirectoryEntry[lAddress>>22]&0xFFFFF000)) &&(!(PageDirectoryEntry[lAddress>>22]&0x00000001))) return 0; //@(C0000000h+(LA&0xFFFFF000)>>10d)&0fffff000h+PO 见上叙述 pAddr=(int *)((int)PageTableEntry+((lAddress&0xFFFFF000)>>10)); if((*pAddr)&1) return ((*pAddr) &0xFFFFF000) |(lAddress&0x00000FFF); return 0; } |
|
地下室#
发布于:2003-03-05 09:44
这么小气,人家辛苦回答了你还不放分。
|
|
|
5楼#
发布于:2003-03-03 10:26
PHYSICAL_ADDRESS
MmGetPhysicalAddress( IN PVOID BaseAddress ); MmMapIoSpace( IN PHYSICAL_ADDRESS PhysicalAddress, IN ULONG NumberOfBytes, IN MEMORY_CACHING_TYPE CacheEnable ); |
|
|