yujh
驱动牛犊
驱动牛犊
  • 注册日期2002-02-21
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1648回复:7

关于NDIS的事件同步

楼主#
更多 发布于:2002-06-17 12:19
各位弟兄帮忙看看:
   我用NDIS开发网卡驱动,想用一些事件来同步,但是NDIS封装的EVENT的NdisWaitEvent只能Callers of NdisWaitEvent must be running at IRQL PASSIVE_LEVEL,但我想在DISPATCH_LEVEL 下同步,怎么办?
    我想用KeInitializeEvent然后KeWaitForSingleObject,但是我包含\"ntddk.h\"后,与\"NDIS.h\"有很多重定义,怎么办?
包含方式如下:
extern \"C\"{
#include \"ntddk.h\"
}
要与不要extern \"C\",及\"ntddk.h\"放在\"NDIS.h\"前后都不行.
不是重定义,就是KeInitializeEvent这几个函数没定义.

            give your hand please!

最新喜欢:

znsoftznsoft
stonefish
runsnow
驱动牛犊
驱动牛犊
  • 注册日期2002-03-01
  • 最后登录2002-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-19 15:13
#define NDIS_WDM 1
don\'t need include \"ntddk.h\"
yujh
驱动牛犊
驱动牛犊
  • 注册日期2002-02-21
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-19 15:44
头文件的问题我已解决,主要是我现在主要使KEVENT,就容易死锁,
不知为何?
stonefish
fhcsl
驱动牛犊
驱动牛犊
  • 注册日期2001-05-23
  • 最后登录2004-11-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-19 18:08
可能是你等的时间太长。另外,若在MINIPORT DRIVER 中加入EVENT就有可能无法通过MICROSOFT 的WHQL 的测试。
yujh
驱动牛犊
驱动牛犊
  • 注册日期2002-02-21
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-19 18:54
那么在miniportdriver中,在DISPATCH_LEVEL下有什么同步方式呢?
ntddk说 KeWaitForSingleObject在DISPATCH_LEVEL下的timeout必须是0,否则就错.
不知兄弟们在同步上有什么心得,不吝赐教,多谢!
stonefish
jeosph
驱动中牛
驱动中牛
  • 注册日期2001-04-19
  • 最后登录2006-08-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-19 19:51
那么在miniportdriver中,在DISPATCH_LEVEL下有什么同步方式呢?
ntddk说 KeWaitForSingleObject在DISPATCH_LEVEL下的timeout必须是0,否则就错.
不知兄弟们在同步上有什么心得,不吝赐教,多谢!


事实上,在DISPATCH_LEVEL级,就不再提供event 同步了,这个时候
同步方式是采用spin_lock ,这也就是DDK提供spinlock的原因哦!
yujh
驱动牛犊
驱动牛犊
  • 注册日期2002-02-21
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-06-20 08:55
spinlock与Event的工作方式不同啊,我不需要某一段程序的原子操作,我需要另一段程序执行完,这边的程序才可以执行.
有没有什么方式可以满足我的要求呢?
stonefish
jyhlc
驱动牛犊
驱动牛犊
  • 注册日期2002-03-11
  • 最后登录2005-11-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-06-27 16:14
好像只能够使用worker thread了,没有其他的办法
游客

返回顶部