阅读:1544回复:3
对MPSend的几点疑惑
各位前辈:
我们可以通过 virtualAddress 得到对收到的以太包的一些描述,14B MACHeader,20B IPHeader,后面TCP,UDT,ICMP…… 可是在 MPSend 中如何得到这些信息呢?在将要发送的层面上 Packet 并不是以太包的结构对吗?我在SoftICE下将要发送的包输出出来看,前面14B的以太头没错, 紧接着是好像是一个ARP的数据包再后面就看不出来是什么东西了,请各位高手指点! |
|
|
沙发#
发布于:2001-11-17 09:08
你仔细的看看DDK中关于PACKET的描述。
每个包的数据被分成几段,分别放在PACKET的几个 的BUFFER。这些BUFFER可以使用NDISGETNEXTBUFFER NDISGETBUFFERSAFE等函数获取。你是不是得到 VIRTUALADDRESS后,直接从这个VIRTUALADDRESS开始 长度为包长的一段连续内存认为是整个包内容? 不是这样的!!!!!! 而且一般的包都是拟太网包头在一BUFFER中,后续数据 在另一个后几个不连续的BUFFER中。 |
|
|
板凳#
发布于:2001-11-17 23:48
PACKET实际就是个链表,提供了头尾两节点和其他描述!包的BUFFER可以通过指针下移动的方法获得!当然也可以用NDIS自己带的操作函数!ARP的下面因该是没有东西的了!要不你看到的包就不是ARP!
|
|
|
地板#
发布于:2001-11-18 11:03
不好意思,是我一时疏忽,现在问题已经解决了,谢谢各位,给大家添麻烦了。
|
|
|