Apollo5
驱动牛犊
驱动牛犊
  • 注册日期2003-12-04
  • 最后登录2004-01-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2088回复:7

请问在WDM中有没有这样一个函数

楼主#
更多 发布于:2003-12-09 17:20
请问在WDM中有没有这样一个函数:主要是实现类似于softice 中的物理地址转换为系统的线性地址。
在softice中用phys physaddress实现的。
最好那位大虾给一个使用的例子。不慎感谢!
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-09 17:47
有的
答得好的话,请兄弟们加点分,那是对我的肯定
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2003-12-10 09:52
没有,只能自己写
// 物理地址->线性地址
    // 相当于SoftICE中Phys命令
    // 搜索所有有效的页表寻找指定物理地址
    // 有可能多个线性地址同时指向同一个物理地址
    // 此函数若未输出任何结果表明当前还没有线性地址映射至此物理地址中

    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));
                }
    }
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
Apollo5
驱动牛犊
驱动牛犊
  • 注册日期2003-12-04
  • 最后登录2004-01-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-29 17:31
那请问这个在DDK中的程序是否能在DriverStudio封装的函数中应用呢?如果不能是否有其他的办法呢?
Apollo5
驱动牛犊
驱动牛犊
  • 注册日期2003-12-04
  • 最后登录2004-01-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-30 14:40
就想VtoolsD中的MapPhysToLinear()?在DS中有么?怎么用呀?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2003-12-31 13:13
MmMapIoSpace maps the given physical address range to nonpaged system space.

PVOID
  MmMapIoSpace(
  IN PHYSICAL_ADDRESS PhysicalAddress,
  IN ULONG NumberOfBytes,
  IN MEMORY_CACHING_TYPE CacheEnable
  );
Apollo5
驱动牛犊
驱动牛犊
  • 注册日期2003-12-04
  • 最后登录2004-01-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-12-31 14:46
我明白了,多谢大家的帮助。 :)
hdnanz
驱动牛犊
驱动牛犊
  • 注册日期2003-01-08
  • 最后登录2004-12-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-01-07 22:00
thinking
游客

返回顶部