自己写的驱动在应用中打开,应用程序界面刷新很慢

2512a2512   2009-3-31 10:13 楼主
这可能是什么原因,我的驱动中就SetEvent给应用.驱动中有个IST.不知道为什么会这样!!
用串口调试 ,发现IST在没有中断产生时 是阻塞在WaitForSingleObject()这里的。。。。
调试信息正常。
开始怀疑是不是要设置下IST的优先级,但是又觉得WaitForSingleObject这个已经在等了,似乎不需要。
应用程序中打开该驱动,好像觉得影响了应用程序主线程?

回复评论 (9)

应用怎么知道你的事件的?有没用有名称的事件?
点赞  2009-3-31 10:23
引用: 引用 1 楼 xqhrs232 的回复:
应用怎么知道你的事件的?有没用有名称的事件?

有事件名称,不然应用收不到!
简单做了个应用测试,这个事件是可以接到的。但是程序界面运行很慢,似乎应用的主线程受到影响。我再应用了用定时器检测的 间隔500ms检测一次事件。明显这个不会影响啊。
点赞  2009-3-31 10:29
在你线程的循环里面加上Sleep,我估计你驱动里面有线程不停地在while,有没有通过Sleep释放执行权利,导致系统运行很慢。
点赞  2009-3-31 11:53
引用: 引用 3 楼 xajhuang 的回复:
在你线程的循环里面加上Sleep,我估计你驱动里面有线程不停地在while,有没有通过Sleep释放执行权利,导致系统运行很慢。

有WaitForSingleObject(),不sleep没问题的.

问题找到了..我在应用中 打开驱动中的事件后,速度就慢了。不打开驱动中的事件应用很正常。。 不知道这是为什么?
点赞  2009-3-31 12:23
应用程序最好开个线程去读写驱动,不然应用程序跟着驱动一起WaitForSingleObject, 那肯定很卡~
点赞  2009-4-3 11:41
同意5楼的观点,采用多线程
点赞  2009-4-3 11:53
既然已经 WaitForSingleObject,那线程自然就 waiting...
点赞  2009-4-3 12:37
樓主 Application 中的 WatiForSingleObject 是放在哪呢?? 是 CreateThread 後, 放在 Thread 內, 還是放在給 GWES 呼叫的 call back function WndProc 內??

若是放在 WndProc 內, 您的 GWES 相關處理全部都會被影響.

Paul, Chao @ Techware
点赞  2009-4-3 17:53
呵呵 问题解决了。。没有用事件了。用消息,结果比用事件效果理想多了。
WatiForSingleObject放在application 中的定时器中。这应该不会卡。
点赞  2009-4-4 23:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复