驱动牛犊
|
阅读:2258回复:3
解读WinDriver生成USB代码,一点不解,求教达人~~
用windriver生成一个USB的范例代码,想看看基本过程,基本明白了,但是对于
DevieAttach这个回调函数就迷糊了~~~ 该函数是在DriverInit中赋给一个临时变量eventTable,然后通过WDM_Init将eventTable交由全局静态驱动句柄hDriver保管,同时,一般回调函数所需的参数也由eventTable交给hDriver 这样看来,我就觉得,比较像线程与线程函数的关系了~~ 但是DeviceAttach这个回调函数还有头两个参数:WDU_DEVICE_HANDLE hDevice, WDU_DEVICE *pDeviceInfo 这样的话就不像我想象的那样了,对于这两个参数值,DeviceAttach是怎么得到的呢? 求教达人~~再拜~ |
|
驱动牛犊
|
沙发#
发布于:2007-07-01 10:38
各位达人,很抱歉没写清楚,太性急了,我在把我下在的那点认识重述遍:
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什么时候调用的?(我觉得是不是像线程函数那样只要全局驱动句柄在,他就一直在运行?) |
|
板凳#
发布于:2007-07-05 11:05
请教楼主:我用driverstudio3.2 的DriverWizard生成了一个Ezusb的驱动和示例测试程序,可以检测出设备,但读写操作时,returnlength总是返回0。Bushound上业没有信号。
可以给点线索吗? |
|
地板#
发布于:2007-12-29 20:32
才接触,还从你的理解中学到了东西。谢谢。
|
|