在PPC2003系统的串口驱动中,我们把三个UART的驱动都放在同一个dll中,所以在打开串口时,就会调用open函数,在这函数里面是通过它的IoBase来区分不同的Uart的,例如 if(pHWHead->IOBase == STUART_BASE_U_VIRTUAL) ...
全文
回复(11) 2005-01-24 10:37 来自版块 - Wince 程序开发
表情
cn_silicon晕倒,这个问题你仔细看看COM_OPEN就知道了,仔细看看吧(2008-01-17 15:14)
blackholeII是通过三个类封状起来的,比如:FFUART,BTUART.STUART,不过生成一个.DLL,在驱动里有明确规定这三个串口对应哪个COM(2008-01-16 14:43)
wwei_wang我觉得它是有三个副本,可是有一点不明白,open时的pHWHead指针是哪个副本的指针,从哪里获得这个指针的地址呢,它指向哪个副本啊? 我再补充一下:)) (1)驱动起来之后,创建了三个驱动实例,同时创建了三个数据区副本分别用来保存对应设备的配置信息,但代码区是共享的。...(2005-01-25 16:38)
wxl_50685330每调用LOADLIBARY就会创建一个副本,从而隶属于不同的实例(2005-01-25 14:30)
chang_nicolas我觉得它是有三个副本,可是有一点不明白,open时的pHWHead指针是哪个副本的指针,从哪里获得这个指针的地址呢,它指向哪个副本啊?(2005-01-25 13:56)
wxl_50685330你的XXX_OPEN函数需要返回不同的值给上层,用以区分不同的设备实例。那个pHWHead应该有三个副本。DLL的数据区默认被调用的所有进程各自创建一个副本,当然,也可以让所有的进程共享一个。(2005-01-25 13:44)
wwei_wang对啊,Application调用时就是根据COM1这个来打开的,可是在驱动的open函数里面,它怎么知道上层是打开的COM1呢,而不是COM2或其他?如果假设它可以靠index来判别 例如if(index==1) {//打开com1} if(index==2) {//打开co...(2005-01-25 08:39)
chang_nicolas对啊,Application调用时就是根据COM1这个来打开的,可是在驱动的open函数里面,它怎么知道上层是打开的COM1呢,而不是COM2或其他?如果假设它可以靠index来判别 例如if(index==1) {//打开com1} if(index==2) {//打开co...(2005-01-24 16:53)
wwei_wang这个知道,不过我的意思是,IoBase的值是从注册表里读出来的,它这样连续三次init后,iobase的值应该是最后一次init后读出的值,例如是STUART吧,那么在调用open时,pHWHead->IOBase 就会是一直等于 STUART_BASE_U_VIRTUAL...(2005-01-24 16:41)
chang_nicolas这个知道,不过我的意思是,IoBase的值是从注册表里读出来的,它这样连续三次init后,iobase的值应该是最后一次init后读出的值,例如是STUART吧,那么在调用open时,pHWHead->IOBase 就会是一直等于 STUART_BASE_U_VIRTUAL...(2005-01-24 14:19)

返回顶部