golden_boy
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2006-02-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1646回复:5

ddk中有无函数能实现物理地址和线性地址的转换

楼主#
更多 发布于:2003-03-03 09:51
ddk中有无函数能实现物理地址和线性地址的转换
ooze
驱动牛犊
驱动牛犊
  • 注册日期2001-09-26
  • 最后登录2004-03-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-07 18:16
是人家参考intel处理器的xx手册写的
Be a true hacker of Windows NT alike
ysr
ysr
驱动牛犊
驱动牛犊
  • 注册日期2001-05-11
  • 最后登录2015-01-29
  • 粉丝0
  • 关注0
  • 积分79分
  • 威望48点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-05 21:03
一个是DDK实现的函数,一个是自己编程实现的。
golden_boy
驱动牛犊
驱动牛犊
  • 注册日期2002-06-20
  • 最后登录2006-02-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于: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;
    }
silan
驱动小牛
驱动小牛
  • 注册日期2002-02-04
  • 最后登录2004-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-05 09:44
这么小气,人家辛苦回答了你还不放分。
/***************************/ 认认真真学好三个代表,踏踏实实做好无产阶级接班人。 /***************************/
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
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
  );
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
游客

返回顶部