阅读:2321回复:12
98下PNDIS_SPIN_LOCK的问题
98下PNDIS_SPIN_LOCK是一个int,好像有的翻译成自旋锁,
这个东西具体是怎么操作的??98下对链表的操作好像没有对PNDIS_SPIN_LOCK进行什么操作, |
|
|
沙发#
发布于:2002-11-12 08:36
98下面也同样的有相应的同步机制。
|
|
板凳#
发布于:2002-11-13 17:08
ddk的例子很多,初始化后调用如下
NdisAcquireSpinLock(&Adapter->UpDownPktLock); NdisReleaseSpinLock(&Adapter->UpDownPktLock); 多看看ddk文档 |
|
|
地板#
发布于:2002-11-14 09:03
mikeluo,你的PIM研究的怎么样了?它在操作链表的时候都没有用什么同步机制,我也很奇怪,这样不会出问题吗?
|
|
地下室#
发布于:2002-11-14 09:10
我没有用他的链表,不过在收包的时候我用了自己的链表,好像出了同步的问题,正在确定问题的原因,
|
|
|
5楼#
发布于:2002-11-14 09:14
ddk的例子很多,初始化后调用如下 你这个是2k下的吧?98下的例子里面我怎么没有看到有这些操作? |
|
|
6楼#
发布于:2002-11-14 10:11
98下ddk中处理链表时根本就没有判断PNDIS_SPIN_LOCK的值,都是直接操作的链表,
|
|
|
7楼#
发布于:2002-11-15 09:55
引用:
-------------------------------------------------------------------------------- ddk的例子很多,初始化后调用如下 NdisAcquireSpinLock(&Adapter->UpDownPktLock); NdisReleaseSpinLock(&Adapter->UpDownPktLock); 多看看ddk文档 -------------------------------------------------------------------------------- 你这个是2k下的吧?98下的例子里面我怎么没有看到有这些操作? 这个代码就是我在win98下一个网卡驱动代码的一部分。 |
|
|
8楼#
发布于:2002-11-15 10:26
你做的是个SYS?我的意思是说,在98ddk中的ndis。h中对链表的操作都没有对PNDIS_SPIN_LOCK的操作,我在我的VXD中对链表的操作前加上了NdisAcquireSpinLock NdisReleaseSpinLock,但是没有起到作用,而且程序中的一个全局链表根本就没有PNDIS_SPIN_LOCK,所以也没有办法对他进行这些操作,不过我想我的问题还是由于同步的问题引起的,
|
|
|
9楼#
发布于:2002-11-15 15:15
查了一下,9x 下好象确实不能用 NdisAcquireSpinLock 等,我在侯杰的书里查到了下面的东西,你看行吗?
_CreateMutex _DestroyMutex _EnterMutex _GetMutexOwner _LeaveMutex |
|
10楼#
发布于:2002-11-15 17:10
好多呢,看VToolsD的帮助,Semaphore, Event等都有。
|
|
11楼#
发布于:2002-11-16 00:37
还没有搞清楚究竟要在哪里设置同步的问题:(
|
|
|
12楼#
发布于:2002-11-16 09:36
我觉得操作全局链表这种任务用临界区和互斥体都可以吧,每个全局链表分配一个相应的同步对象,要操作链表时:
EnterMutex(加密链表对应对象) 加密链表 LeaveMutex(加密链表对应对象) 这样就不会出现两段代码同时操作一个数据结构的情况了,不知我说的对否? mikeluo 兄,你知道 _CreateMutex 参数怎么个用法吗?我没搞明白. |
|