fox1999
驱动牛犊
驱动牛犊
  • 注册日期2006-04-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
阅读:2007回复:12

驱动与用户程序通讯,阻塞等待用户程序响应的问题

楼主#
更多 发布于:2007-08-03 15:58

驱动与用户程序通讯,阻塞等待用户程序响应的问题

比如像防火墙那种,驱动程序拦到了一个网络连接。它把它反鐀给用户界面,提示“XXX程序向XXX路径发起连接,是否允许?”这时让用户选择。如果用户不选,界面就会阻塞在那里。
普通是用户与驱动方法这个我会,因为它是由用户程序发起的。驱动返回数据。而不阻塞。
而像现在这种从驱动到用户界面,会在用户界面阻塞,这种情况需要如何处理?

znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2007-08-05 23:40
一般情况下,需要设置一下超时,如果用户不选择,超时到达后,使用默认的方式进行处理
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
wangjianfeng
驱动小牛
驱动小牛
  • 注册日期2004-05-28
  • 最后登录2013-10-02
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望263点
  • 贡献值0点
  • 好评度260点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-08-06 09:20
Event,似乎都是用Event
fox1999
驱动牛犊
驱动牛犊
  • 注册日期2006-04-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-07 09:54
能不能給我個一最簡單的例子?
scutfang
驱动牛犊
驱动牛犊
  • 注册日期2007-03-18
  • 最后登录2008-02-29
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-20 11:51
顶一下,我也想知道,高手能不能给个例子?
kxsystem
驱动牛犊
驱动牛犊
  • 注册日期2006-11-25
  • 最后登录2011-08-29
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望56点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-08-20 13:07
共享EVENT
troylees
驱动牛犊
驱动牛犊
  • 注册日期2006-05-10
  • 最后登录2009-05-01
  • 粉丝0
  • 关注0
  • 积分678分
  • 威望128点
  • 贡献值0点
  • 好评度67点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-08-23 13:26
貌似方法还是比较多的,而我用的是双事件通讯,这个方法比较普遍简单,大概原理是这样:
1. 创建两个事件对象,驱动和用户程序一人用一个
2. 用户程序创建线程,让他阻塞等待事件
3. 驱动发现异常就发送事件通知用户线程,然后自己阻塞等待另外一个事件
4. 线程弹出对话框让用户选择后,发送数据和事件通知驱动,然后自己再重新阻塞
lz试试这样行不行
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2007-08-23 15:05
,楼上的方法
人不靓仔心灵美,版头不正红花仔!
fox1999
驱动牛犊
驱动牛犊
  • 注册日期2006-04-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-09-17 09:57
3. 驱动发现异常就发送事件通知用户线程,然后自己阻塞等待另外一个事件

---------------------------------
但這個方法對防火牆可能不好吧,驅動陰塞等待一個事件了,如果這時有別的應用程序要發數據怎麼辦?這時你的驅動陰在這裡。這樣一樣所有的網絡通訊都給斷開了。
qq_10652
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2008-07-04
  • 粉丝0
  • 关注0
  • 积分560分
  • 威望57点
  • 贡献值0点
  • 好评度57点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-09-17 15:59
推荐6楼方法

阻塞是对线程的,不影响其它的程序
fox1999
驱动牛犊
驱动牛犊
  • 注册日期2006-04-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-09-18 13:19
阻塞不會只是對線程,因為你的驅動也在阻塞等待用戶的選擇了。如果用戶不選,那你的驅動會一直阻在這裡。
fox1999
驱动牛犊
驱动牛犊
  • 注册日期2006-04-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度82点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-09-19 08:30
wowocock 大俠也說用雙等待事件可以實現,我得試試了,大俠說的總是有道理的。
lovehhy
驱动小牛
驱动小牛
  • 注册日期2007-09-17
  • 最后登录2010-09-17
  • 粉丝0
  • 关注0
  • 积分1028分
  • 威望244点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-09-20 00:37
学习学习
游客

返回顶部