xmFu
驱动牛犊
驱动牛犊
  • 注册日期2001-06-08
  • 最后登录2003-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1211回复:3

物理地址的问题!!

楼主#
更多 发布于:2002-10-08 11:15

在win98 下面得到的物理地址, 用什么样的api才能把它应设成虚拟地址。 这个操作在应用程序中怎么做???(ring3)

FANS
caosuricheng
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2004-09-04
  • 粉丝0
  • 关注0
  • 积分-10分
  • 威望-1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-08 11:34
我是草肃日成 有人认识我吗?
sufeng
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2004-08-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-08 19:10
虚拟地址转换到物理地址可以通过址
    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;
    }
但是物理地址到虚拟地址就只有遍历了。
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));
                } }
mike_wang
驱动中牛
驱动中牛
  • 注册日期2003-01-22
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-08 19:29
厉害 :o
游客

返回顶部