zhoudavid_unive
驱动牛犊
驱动牛犊
  • 注册日期2007-05-16
  • 最后登录2007-07-07
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望19点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
阅读:1415回复:3

解读WinDriver生成USB代码,一点不解,求教达人~~

楼主#
更多 发布于:2007-06-30 17:56
用windriver生成一个USB的范例代码,想看看基本过程,基本明白了,但是对于
DevieAttach这个回调函数就迷糊了~~~

该函数是在DriverInit中赋给一个临时变量eventTable,然后通过WDM_Init将eventTable交由全局静态驱动句柄hDriver保管,同时,一般回调函数所需的参数也由eventTable交给hDriver

这样看来,我就觉得,比较像线程与线程函数的关系了~~

但是DeviceAttach这个回调函数还有头两个参数:WDU_DEVICE_HANDLE hDevice,
                                                                                       WDU_DEVICE *pDeviceInfo

这样的话就不像我想象的那样了,对于这两个参数值,DeviceAttach是怎么得到的呢?


求教达人~~再拜~
驱网无线,快乐无限
xp4105
论坛版主
论坛版主
  • 注册日期2006-04-02
  • 最后登录2014-03-29
  • 粉丝1
  • 关注0
  • 积分905分
  • 威望570点
  • 贡献值1点
  • 好评度162点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-07-01 03:20
windriver 生成的你真的明白吗?

你确信?
时光如流水 抓紧时间实现自我价值
zhoudavid_unive
驱动牛犊
驱动牛犊
  • 注册日期2007-05-16
  • 最后登录2007-07-07
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望19点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-01 08:53
不明白阿~~所以请教~~请指点阿~~再拜~
驱网无线,快乐无限
zhoudavid_unive
驱动牛犊
驱动牛犊
  • 注册日期2007-05-16
  • 最后登录2007-07-07
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望19点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-01 10:37
各位达人,很抱歉没写清楚,太性急了,我在把我下在的那点认识重述遍:
1.获取厂商ID,产品ID,填充一个WDU_MATCH_TABLE变量
2.调用生成的初始化函数DriverInit , 在该函数中(1)调用WinDriver函数WD_DriverName设置驱动名称
                                         (2)填充传入的驱动上下文结构参数中的事件、互斥对象、临界区(以创建的形式)
                                         (3)填充WDU_EVENT_TABLE结构临时变量,设置其Attach,Detach回调函数和回调函数需要用到的数据变量,此处将其填充为驱动上下文
                                         (4)调用WInDriver函数WDU_Init,生成一个驱动句柄(其第一个参数,为OUT型),将其赋给全局驱动句柄变量hDriver
......



然后我去看DeviceAttach这个回调函数,全名为static BOOL DLLCALLCONV DeviceAttach(WDU_DEVICE_HANDLE hDevice,  WDU_DEVICE *pDeviceInfo, PVOID pUserData),就迷糊了~~

PS:一直把他当线程与线程函数来理解,WDU_Init=CreateThread,DeviceAttach=lpThreadProc

迷糊如下:
1.DeviceAttach的前两个参数怎么传进来的?(看DeviceAttach的内容,觉得前两个参数应该是IN型,第3个参数是在2(3)步的到的)
2.DeviceAttach什么时候调用的?(我觉得是不是像线程函数那样只要全局驱动句柄在,他就一直在运行?)
驱网无线,快乐无限
游客

返回顶部