阅读:1648回复:7
关于NDIS的事件同步
各位弟兄帮忙看看:
我用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! |
|
最新喜欢:znsoft
|
沙发#
发布于:2002-06-19 15:13
#define NDIS_WDM 1
don\'t need include \"ntddk.h\" |
|
板凳#
发布于:2002-06-19 15:44
头文件的问题我已解决,主要是我现在主要使KEVENT,就容易死锁,
不知为何? |
|
|
地板#
发布于:2002-06-19 18:08
可能是你等的时间太长。另外,若在MINIPORT DRIVER 中加入EVENT就有可能无法通过MICROSOFT 的WHQL 的测试。
|
|
地下室#
发布于:2002-06-19 18:54
那么在miniportdriver中,在DISPATCH_LEVEL下有什么同步方式呢?
ntddk说 KeWaitForSingleObject在DISPATCH_LEVEL下的timeout必须是0,否则就错. 不知兄弟们在同步上有什么心得,不吝赐教,多谢! |
|
|
5楼#
发布于:2002-06-19 19:51
那么在miniportdriver中,在DISPATCH_LEVEL下有什么同步方式呢? 事实上,在DISPATCH_LEVEL级,就不再提供event 同步了,这个时候 同步方式是采用spin_lock ,这也就是DDK提供spinlock的原因哦! |
|
6楼#
发布于:2002-06-20 08:55
spinlock与Event的工作方式不同啊,我不需要某一段程序的原子操作,我需要另一段程序执行完,这边的程序才可以执行.
有没有什么方式可以满足我的要求呢? |
|
|
7楼#
发布于:2002-06-27 16:14
好像只能够使用worker thread了,没有其他的办法
|
|