sducwolf
驱动牛犊
驱动牛犊
  • 注册日期2009-01-04
  • 最后登录2016-03-24
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望101点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1648回复:5

PTRecieve问题还是DbgPrint问题

楼主#
更多 发布于:2009-02-05 17:44
在Passthru的PtReceive当中,我想解析出以太头看一下,只是简单地用DbgPrint函数打印,结果打印出的结果当中多了很多fffffff

char * buffer = HeaderBuffer;
DbgPrint("***************************************************************************\n");
DbgPrint("*PacketSize = %d\n",PacketSize);
DbgPrint("*LookAheadBufferSize = %d\n",LookAheadBufferSize);
DbgPrint("*DMAC=%02x%02x%02x%02x%02x%02x\n",
             buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]);
DbgPrint("*DMAC=%x-%x-%x-%x-%x-%x\n",
             buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]);
DbgPrint("*SMAC=%02x%02x%02x%02x%02x%02x\n",
             buffer[6], buffer[7], buffer[8], buffer[9], buffer[10], buffer [11]);
DbgPrint("*TYPE=%02x%02x\n", buffer[12], buffer[13]);
DbgPrint("***************************************************************************\n");


通过DBGView观察输出结果
00000004    0.00229666    *PacketSize = 78    
00000005    0.00233773    *LookAheadBufferSize = 78    
00000006    0.00239500    *DMAC=ffffffffffffffffffffffffffffffffffffffffffffffff    
00000007    0.00243774    *DMAC=ffffffff-ffffffff-ffffffff-ffffffff-ffffffff-ffffffff    
00000008    0.00247909    *SMAC=0800270dffffff8753    
00000009    0.00251931    *TYPE=0800    
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-02-05 21:01
Type=0800表示为IP包,应该是正确的数据
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
sducwolf
驱动牛犊
驱动牛犊
  • 注册日期2009-01-04
  • 最后登录2016-03-24
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望101点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-02-05 21:15
楼上你好  为什么会有 那么多 ffff 输出呢   感觉它的输出很没有道理?
用C 不好解释?!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-02-06 15:58
如果是广播地址则就是6个FF
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
sducwolf
驱动牛犊
驱动牛犊
  • 注册日期2009-01-04
  • 最后登录2016-03-24
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望101点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-02-07 18:37
该问题已解决,至于为什么会输出那么多fffff 是C语言编程的问题,即相同的数据在用户态下用printf以同样的格式输出,结果还是这样,当char型数据首字节为1,就会输出很多fffff,至于为什么我还解释不了
将char *buffer定义改为unsigned *buffer即可避免这种状况
cuittx2008
驱动牛犊
驱动牛犊
  • 注册日期2008-12-02
  • 最后登录2009-04-28
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2009-03-06 11:53
printf打印char时,是会这样,其他进行了隐式类型转换,即char->int。如果char首位为1,认为是负的,在转换时,就会在前24位补1,结果就是上面的现象;如果首位为0,则补0,结果不变。
游客

返回顶部