aliving
驱动小牛
驱动小牛
  • 注册日期2001-07-18
  • 最后登录2004-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1878回复:2

ProtocolReserved里面的东西

楼主#
更多 发布于:2001-08-30 15:14
包描述符中的ProtocolReserved里面到底有些什么东西,可以在这里修改上行下行包的协议类型吗?比如IP、ARP、ICMP或者别的什么协议类型。如何改写和定义ProtocolReserved里面的东西呢?
~~~~ Looking For Hope ~~~~ [img]http://www.driverdevelop.com/forum/upload/aliving/2002-11-11_me.jpg[/img]
aliving
驱动小牛
驱动小牛
  • 注册日期2001-07-18
  • 最后登录2004-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-30 23:10
typedef struct _NDIS_PACKET {
    NDIS_PACKET_PRIVATE  Private;
    union {
        struct {
             UCHAR       MiniportReserved[2*sizeof(PVOID)];
             UCHAR       WrapperReserved[2*sizeof(PVOID)];
        };
        struct {
             UCHAR       MiniportReservedEx[3*sizeof(PVOID)];
             UCHAR       WrapperReservedEx[sizeof(PVOID)];
        };
        struct {
             UCHAR       MacReserved[4*sizeof(PVOID)];
        };
    };
    ULONG_PTR            Reserved[2];
    UCHAR                ProtocolReserved[1];
} NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET;
~~~~ Looking For Hope ~~~~ [img]http://www.driverdevelop.com/forum/upload/aliving/2002-11-11_me.jpg[/img]
aliving
驱动小牛
驱动小牛
  • 注册日期2001-07-18
  • 最后登录2004-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-30 23:54
自问自答也未尝不是一件好事:

以上结构体定义的是NDIS包描述符,而ProtocolReservced是包描述符结构体的一部分,对于以太网而言,它的大小不应该小于16个字节,既然是ProtocolReservced,那么自然归协议驱动所用,协议驱动可以把这个域用作保存其分配的第一个buffer的指针。然后协议驱动还要把它分配的这个包描述符通过调用NdisTransferData发送出去
.
~~~~ Looking For Hope ~~~~ [img]http://www.driverdevelop.com/forum/upload/aliving/2002-11-11_me.jpg[/img]
游客

返回顶部