您的位置:首页 > 其它

code跟踪函数时,遇到函数指针,该怎么继续跟踪

2016-10-08 17:33 162 查看
示例:vgaR3IOPortHGSMIWrite

1. PDMDevHlpIOPortRegister(vgaR3IOPortHGSMIWrite),跟踪PDMDevHlpIOPortRegister()

DECLINLINE(int) PDMDevHlpIOPortRegister(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts, RTHCPTR pvUser,

                                        PFNIOMIOPORTOUT pfnOut, PFNIOMIOPORTIN pfnIn,

                                        PFNIOMIOPORTOUTSTRING pfnOutStr, PFNIOMIOPORTINSTRING pfnInStr, const char *pszDesc)

{

    return pDevIns->pHlpR3->pfnIOPortRegister(pDevIns, Port, cPorts, pvUser, pfnOut, pfnIn, pfnOutStr, pfnInStr, pszDesc);

}

2. pfnIOPortRegister(pfnOut)

    pfnIOPortRegister(vgaR3IOPortHGSMIWrite)

    

    这里不再跟踪pfnIOPortRegister, 而是跟踪pfnOut的参数类型 PFNIOMIOPORTOUT

    vgaR3IOPortHGSMIWrite肯定是赋值给xxx变量,xxx变量的参数类型也一定是 PFNIOMIOPORTOUT

3. 接下来找出的八成是一个结构体

找到pfnOutCallback变量,变量类型为 PFNIOMIOPORTOUT

pfnOutCallback被vgaR3IOPortHGSMIWrite赋值后,肯定就当作一个函数使用,跟踪pfnOutCallback


<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

阅读(244) | 评论(0) | 转发(0) |

0
上一篇:如何判断桌面云的显示图像错误是否是虚拟化平台导致的

下一篇:virtualbox代码阅读技巧

相关热门文章
LNK1123: 转换到 COFF 期间失...

WIN7访问共享:0x80070035 找不...

Delphi 2010下载+完美破解...

vs2010调试C++程序时提示 无...

VISIO,不规则封闭图形填充方...

linux dhcp peizhi roc

关于Unix文件的软链接

求教这个命令什么意思,我是新...

sed -e "/grep/d" 是什么意思...

谁能够帮我解决LINUX 2.6 10...

给主人留下些什么吧!~~

评论热议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: