关于windows的pci驱动事件等待问题

controstr 2014-10-28 02:33:07
pci驱动中,在线程中使用事件等待遇到一个问题请大家指教原因;
我创建一个线程,在线程中使用事件等待函数KeWaitForSingleObject等待时间为1毫秒,可是在同样的WIN7下,待等时间相差有10毫秒的差别。

LARGE_INTEGER waitTime;
waitTime.QuadPart = -10*1000;或waitTime.QuadPart = -10*100;
使用KeDelayExecutionThread(KernelMode,TRUE,&waitTime);
或使用
KeWaitForSingleObject(hExitEvent, Executive, KernelMode, FALSE,&waitTime);

在有些系统下等待为1秒钟只能等待10次,即10毫秒才会超时或触发一次。
或者使用定时器的时候,取值waitTime.QuadPart = -10*1000;或waitTime.QuadPart = -10*100;都是10毫秒才触发一次。
我希望能最少1毫秒就能触发一次或1毫秒能触发多次,但在同样的WIN7下面,有些系统却如我所愿。请问这是什么原因。请各位老师指点
...全文
313 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
曹大夯 2014-10-30
  • 打赏
  • 举报
回复
高优先级的硬件中断可以获取高精度的响应时间。
xuanyuan_zangge 2014-10-29
  • 打赏
  • 举报
回复
这个是不是和系统的时间片有关系?
controstr 2014-10-29
  • 打赏
  • 举报
回复
引用 5 楼 Huntercao 的回复:
[quote=引用 4 楼 xuanyuan_zangge 的回复:] 这个是不是和系统的时间片有关系?
个人觉得是这样的。线程/进程本身不能保证按时被调用,那么线程/进程里面的Event当然不能保证按时被调用。[/quote] 那我如何能实现在驱动里等待时间在1毫秒左右(大概能这到个时间段,不需要很准时),在等待时而不占用CPU
曹大夯 2014-10-29
  • 打赏
  • 举报
回复
引用 4 楼 xuanyuan_zangge 的回复:
这个是不是和系统的时间片有关系?
个人觉得是这样的。线程/进程本身不能保证按时被调用,那么线程/进程里面的Event当然不能保证按时被调用。
controstr 2014-10-28
  • 打赏
  • 举报
回复
或者有没有办法达到毫秒级的等待,
controstr 2014-10-28
  • 打赏
  • 举报
回复
不会吧,怎么我装其中一个系统一秒钟可触发1000次呢,如果我想在一个循环里(不使用中断)在驱动中读数据,一秒钟读一千次,应该如何实现。
曹大夯 2014-10-28
  • 打赏
  • 举报
回复
Windows 7不是实时操作系统。所以事件触发的时间不能精确到1ms或者10ms。

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧