首页
社区
课程
招聘
[讨论]到底是什么原因
发表于: 2011-1-6 16:46 3034

[讨论]到底是什么原因

2011-1-6 16:46
3034
最近做一个项目过程碰到了个棘手的问题,发来想给大家看看,不知道大家有没有碰到过,或者看 完之后能给点意见和思路什么的。
    好先说明下,有个数据采集器,我已经装好usb驱动,插上usb电缆就可以用了
                      该数据采集器的厂商提供了c#的sdk开发dll,下面会提到
                      上层程序是c#的

1    首先我插上usb,开启我的应用程序,应用程序中提供了初始化的方法,主要是通过厂商提供的api初始化数据采集器,为采集数据做好准备。接下来我通过应用程序调用其厂商的api接口开始采集数据

2    如果我先打开应用程序,然后在未插上数据采集器的情况下,初始化数据采集器,则应用程序可以得到初始化失败的提示,此时我在插上数据采集器,再次调用初始化方法,则再也初始化不成功,必须我再次关闭程序,重新打开程序才能正常使用。

     程序主要为c#mccdaq.dll,我用反编译工具查看了下,mccdaq.dll是一个c#的托管dll,最终里头会调用cbw32.dll该非托管代码,主要方便上层c#调用api的方法。
如图所示:

     我得出的结论:从厂商提供的文档来看好像只有一个进程可以使用该dll,如果第一次使用不成功的话,再次初始化也许因为上次初始化失败,没释放掉某某东西吧,这是我猜测。
如图所示:

     厂商本身提供有一个测试程序,有个refresh按钮,点它,你拔掉,或者插上都可以检测到,我用od跟了下该方法内的东西,不过没发现什么,不知道他是怎么实现的,为何人家可以不退出程序实现了即插即用!

    不知道大家有没有好的建议和想法,说来听听,是不是要跟它提供的sys驱动撤上关系?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//