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...
给主人留下些什么吧!~~
评论热议
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...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- C++中函数怎么返回一个二维数组。指针怎么指向二维数组?
- 怎么将一个类的成员函数作为指针传递给另一个类的成员函数
- int * (*ptr)()怎么理解(指向函数的指针)
- 64位平台上,函数返回指针时遇到的段错误问题
- c函数指针的优先级规则---怎么来读一个很长的声明呢? [转]
- 【疑问&感受】初见指针——当函数遇到指针
- 当函数重载遇到函数指针
- “作为函数参数的二维数组”即“怎么给函数传二维数组的指针”
- 又遇到Python另外一个问题:函数作参数,怎么传递参数?
- 链表的头指针在函数里修改怎么没有用?
- 函数中的指针分配的内存怎么释放
- 函数的指针参数传出时遇到的问题
- 当memset遇到函数参数中的指针时
- 用户控件中怎么调用App_Code中的函数
- 新人请问,怎么获取类成员函数的指针
- LinuxC数组与指针,函数中遇到的问题
- C函数只能有一个返回值,如果需要返回多个值,怎么办,其实很简单,只要将指针作为函数参数传递就可以了
- Linux下man命令查询的时候遇到重名的命令/函数怎么办?
- C语言怎么让一个函数返回指针
- 今天遇到的一个函数指针的问题