xiuming
驱动牛犊
驱动牛犊
  • 注册日期2004-12-10
  • 最后登录2006-02-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1150回复:3

ndisuio中ndis send取消ID的计算是否有问题?

楼主#
更多 发布于:2005-07-07 21:09
  ntdisp.c

.........
.........
.........

Globals.PartialCancelId = NdisGeneratePartialCancelId();
Globals.PartialCancelId <<= ((sizeof(PVOID) - 1) * 8);

.........
.........
.........

***********************************************
macros.h

.........
.........
.........

#define NUIO_CANCEL_ID_LOW_MASK   (((ULONG_PTR)-1) >> 8)

#define NUIO_GET_NEXT_CANCEL_ID()                                   \
    (PVOID)(Globals.PartialCancelId |                             \
      ((NdisInterlockedIncrement(&Globals.LocalCancelId)) & NUIO_CANCEL_ID_LOW_MASK))

.........
.........
.........

*****************************************

其中PartialCancelId 类型UCHAR;LocalCancelId类型ULONG

NUIO_GET_NEXT_CANCEL_ID()返回值高8将全为零,PartialCancelId 没有用着。

ddk中说NdisGeneratePartialCancelId的返回值不是作为ndis send取消ID的高字节吗?
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-07-08 08:09
Globals.PartialCancelId <<= ((sizeof(PVOID) - 1) * 8);
左移24位,在高8位,
#define NUIO_CANCEL_ID_LOW_MASK   (((ULONG_PTR)-1) >> 8)
高8位为0,为0x00ffffff
#define NUIO_GET_NEXT_CANCEL_ID()                       \
  (PVOID)(Globals.PartialCancelId |                   \
    ((NdisInterlockedIncrement(&Globals.LocalCancelId)) & NUIO_CANCEL_ID_LOW_MASK))
正好高8位是NdisGeneratePartialCancelId,怎么会是0呢?
xiuming
驱动牛犊
驱动牛犊
  • 注册日期2004-12-10
  • 最后登录2006-02-09
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-07-09 23:43
不对我上边不是写了吗
PartialCancelId类型为UCHAR

所以
Globals.PartialCancelId <<= ((sizeof(PVOID) - 1) * 8);

Globals.PartialCancelId为0
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-07-10 08:00
哦,没有看仔细,如果是UCHAR,就是错了.应该改成ULONG
游客

返回顶部