flywithlove
驱动小牛
驱动小牛
  • 注册日期2002-11-05
  • 最后登录2009-10-09
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望18点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:1687回复:13

有关超时问题!

楼主#
更多 发布于:2002-11-05 16:13
如何在应用层实现超时操作?
痛并快乐着!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-06 12:24
sleep
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
VanCheer
驱动老牛
驱动老牛
  • 注册日期2002-02-21
  • 最后登录2003-08-28
  • 粉丝0
  • 关注0
  • 积分-20分
  • 威望-10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-06 12:36
啥超时?
不懂。
对什么超时?Socket?
[img]http://www.driverdevelop.com/forum/upload/VanCheer/2003-03-21_mon.gif[/img][img]http://www.driverdevelop.com/forum/upload/VanCheer/2002-12-07_smallbaby.jpg[/img]
day_dreaming21
驱动牛犊
驱动牛犊
  • 注册日期2002-09-29
  • 最后登录2002-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-06 13:49
斑竹,能具体点吗?有没有范例?
day_dreaming21
驱动牛犊
驱动牛犊
  • 注册日期2002-09-29
  • 最后登录2002-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-06 14:21
我说的是在应用层用KeWaitForSingleObject如何实现超时?
nikko
驱动小牛
驱动小牛
  • 注册日期2002-08-08
  • 最后登录2004-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-06 16:29
还是没说明白!!
http://202.106.185.224/music_1024/battleraper_02_04_27.mp3
OneWind
驱动小牛
驱动小牛
  • 注册日期2002-05-15
  • 最后登录2009-04-10
  • 粉丝0
  • 关注0
  • 积分82分
  • 威望11点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-06 17:11
一点也不明摆
嘿,大家好!
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-06 17:13
我说的是在应用层用KeWaitForSingleObject如何实现超时?

以下例子实现等待事件2秒:
int interval=2000;//等待时间,毫秒为单位
DWORD result=WaitForSingleObject(hevent/*事件句柄*/,
                                interval);
switch(result)
{
   case WAIT_OBJECT_0:
       …………
       //此处是没有超时的操作
       break;
   default:
       …………
       //超时      
}


打一枪……换个地方……再打一枪……
dzjhnld
驱动老牛
驱动老牛
  • 注册日期2002-09-30
  • 最后登录2002-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-07 11:03
如何在应用层实现超时操作?

那你就对它进行延时操作呀 :)
我只在delphi下做过。 :(不过我想c也应该差不多吧 :)
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉 罪过罪过!!
dzjhnld
驱动老牛
驱动老牛
  • 注册日期2002-09-30
  • 最后登录2002-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-07 11:13
下面这个例子实现了对串口操作的延时:
Function SelectCommState(CommPort1:String;Delaytimes:integer) : Boolean;  //选择串口函数,并设置延时
var
  commtimeout : TCommTimeouts;
  bResult : Boolean;
  CommPort : String;
begin
  if hCommDev <> NULL then CloseHandle(hCommDev);
  CommPort:=CommPort1;
  hCommDev := CreateFile(PChar(CommPort), GENERIC_READ or GENERIC_WRITE,
                         0, nil, OPEN_EXISTING, 0, 0);
  if hCommDev = INVALID_HANDLE_VALUE then
  begin
    MessageBox(0, PChar(\'无法打开串口!\'), PChar(\'错误\'), MB_OK);
    if hCommDev <> NULL then CloseHandle(hCommDev);// handle to object to close
    hCommDev := NULL;
  end;

  bResult := GetCommTimeouts(hCommDev, commtimeout);
  if not bResult then MessageBox(0,PChar(\'无法取得超时信息!\'),PChar(\'错误\'),MB_OK);
  With commtimeout do begin
   ReadIntervalTimeout := Delaytimes;
   ReadTotalTimeoutConstant :=Delaytimes;
   WriteTotalTimeoutConstant := Delaytimes;
  end;
  bResult := SetCommTimeouts(hCommDev, commtimeout);
  if not bResult then MessageBox(0,PChar(\'无法设置超时信息!\'),PChar(\'错误\'),MB_OK);
  Result :=bResult;
end;
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉 罪过罪过!!
Samuels
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2003-01-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-07 13:31
看了觉得一头浆糊

NTSTATUS
  KeWaitForSingleObject(
  IN PVOID  Object,
  IN KWAIT_REASON  WaitReason,
  IN KPROCESSOR_MODE  WaitMode,
  IN BOOLEAN  Alertable,
  IN PLARGE_INTEGER  Timeout  OPTIONAL
  );

DWORD WaitForSingleObject(
  HANDLE hHandle,        // handle to object
  DWORD dwMilliseconds   // time-out interval
);

从定义看都是有超时的
flywithdreams
驱动牛犊
驱动牛犊
  • 注册日期2002-08-02
  • 最后登录2002-12-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-07 13:34
对阿,如何在应用层上利用KeWaitForSingleObject进行超时操作!
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-11-07 15:07
看了觉得一头浆糊

NTSTATUS
  KeWaitForSingleObject(
  IN PVOID  Object,
  IN KWAIT_REASON  WaitReason,
  IN KPROCESSOR_MODE  WaitMode,
  IN BOOLEAN  Alertable,
  IN PLARGE_INTEGER  Timeout  OPTIONAL
  );

DWORD WaitForSingleObject(
  HANDLE hHandle,        // handle to object
  DWORD dwMilliseconds   // time-out interval
);
从定义看都是有超时的

应用层应该用后者吧,就是在超时之前事件被触发时执行一种操作,超时还没有被触发执行另一种操作,有什么复杂?

[编辑 -  11/7/02 by  brucezh]
打一枪……换个地方……再打一枪……
dzjhnld
驱动老牛
驱动老牛
  • 注册日期2002-09-30
  • 最后登录2002-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-11-08 08:21
应用层应该用后者吧,就是在超时之前事件被触发时执行一种操作,超时还没有被触发执行另一种操作,有什么复杂?

[编辑 -  11/7/02 by  brucezh]

nod,nod
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉 罪过罪过!!
游客

返回顶部