Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1570613
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: Windows平台

2015-04-10 11:38:08


  1. 示例:vgaR3IOPortHGSMIWrite

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

  3. DECLINLINE(int) PDMDevHlpIOPortRegister(PPDMDEVINS pDevIns, RTIOPORT Port, RTIOPORT cPorts, RTHCPTR pvUser,
  4.                                         PFNIOMIOPORTOUT pfnOut, PFNIOMIOPORTIN pfnIn,
  5.                                         PFNIOMIOPORTOUTSTRING pfnOutStr, PFNIOMIOPORTINSTRING pfnInStr, const char *pszDesc)
  6. {
  7.     return pDevIns->pHlpR3->pfnIOPortRegister(pDevIns, Port, cPorts, pvUser, pfnOut, pfnIn, pfnOutStr, pfnInStr, pszDesc);
  8. }

  9. 2. pfnIOPortRegister(pfnOut)
  10.     pfnIOPortRegister(vgaR3IOPortHGSMIWrite)
  11.     
  12.     这里不再跟踪pfnIOPortRegister, 而是跟踪pfnOut的参数类型 PFNIOMIOPORTOUT
  13.     vgaR3IOPortHGSMIWrite肯定是赋值给xxx变量,xxx变量的参数类型也一定是 PFNIOMIOPORTOUT

  14. 3. 接下来找出的八成是一个结构体
  15. 找到pfnOutCallback变量,变量类型为 PFNIOMIOPORTOUT
  16. pfnOutCallback被vgaR3IOPortHGSMIWrite赋值后,肯定就当作一个函数使用,跟踪pfnOutCallback

阅读(955) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~