mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2321回复:12

98下PNDIS_SPIN_LOCK的问题

楼主#
更多 发布于:2002-11-11 17:23
98下PNDIS_SPIN_LOCK是一个int,好像有的翻译成自旋锁,
这个东西具体是怎么操作的??98下对链表的操作好像没有对PNDIS_SPIN_LOCK进行什么操作,
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2002-11-12 08:36
98下面也同样的有相应的同步机制。
yiduz
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录2003-10-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-13 17:08
ddk的例子很多,初始化后调用如下
NdisAcquireSpinLock(&Adapter->UpDownPktLock);
NdisReleaseSpinLock(&Adapter->UpDownPktLock);

多看看ddk文档
ydzhang
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-14 09:03
mikeluo,你的PIM研究的怎么样了?它在操作链表的时候都没有用什么同步机制,我也很奇怪,这样不会出问题吗?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-14 09:10
我没有用他的链表,不过在收包的时候我用了自己的链表,好像出了同步的问题,正在确定问题的原因,
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-14 09:14
 
ddk的例子很多,初始化后调用如下
NdisAcquireSpinLock(&Adapter->UpDownPktLock);
NdisReleaseSpinLock(&Adapter->UpDownPktLock);

多看看ddk文档

你这个是2k下的吧?98下的例子里面我怎么没有看到有这些操作?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-14 10:11
98下ddk中处理链表时根本就没有判断PNDIS_SPIN_LOCK的值,都是直接操作的链表,
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
yiduz
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录2003-10-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-15 09:55
引用:
--------------------------------------------------------------------------------
 ddk的例子很多,初始化后调用如下
NdisAcquireSpinLock(&Adapter->UpDownPktLock);
NdisReleaseSpinLock(&Adapter->UpDownPktLock);

多看看ddk文档

--------------------------------------------------------------------------------


你这个是2k下的吧?98下的例子里面我怎么没有看到有这些操作?

这个代码就是我在win98下一个网卡驱动代码的一部分。
ydzhang
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-15 10:26
你做的是个SYS?我的意思是说,在98ddk中的ndis。h中对链表的操作都没有对PNDIS_SPIN_LOCK的操作,我在我的VXD中对链表的操作前加上了NdisAcquireSpinLock   NdisReleaseSpinLock,但是没有起到作用,而且程序中的一个全局链表根本就没有PNDIS_SPIN_LOCK,所以也没有办法对他进行这些操作,不过我想我的问题还是由于同步的问题引起的,
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-15 15:15
查了一下,9x 下好象确实不能用 NdisAcquireSpinLock 等,我在侯杰的书里查到了下面的东西,你看行吗?

_CreateMutex
_DestroyMutex
_EnterMutex
_GetMutexOwner
_LeaveMutex
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
10楼#
发布于:2002-11-15 17:10
好多呢,看VToolsD的帮助,Semaphore, Event等都有。
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-16 00:37
还没有搞清楚究竟要在哪里设置同步的问题:(
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
edust
驱动中牛
驱动中牛
  • 注册日期2002-04-02
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-11-16 09:36
我觉得操作全局链表这种任务用临界区和互斥体都可以吧,每个全局链表分配一个相应的同步对象,要操作链表时:

EnterMutex(加密链表对应对象)
加密链表
LeaveMutex(加密链表对应对象)

这样就不会出现两段代码同时操作一个数据结构的情况了,不知我说的对否?

mikeluo 兄,你知道 _CreateMutex 参数怎么个用法吗?我没搞明白.
游客

返回顶部