NDIS LWF收发3G网卡Mobile Broadband的自定义数据
2016-10-24 18:13
405 查看
使用NDIS LWF过滤WCDMA数据,需要对相关网络数据包进行修改。测试发现3G网卡(不是所有的3G网卡)属于NdisMediumWirelessWan类型,在FilterAttach函数中对filter类型有NdisMediumWirelessWan,NdisMediumWan,NdisMedium802_3做判断。而NdisMediumWirelessWan这种网卡的数据包通过lwf抓包发现是没有mac头的。期初以为方法有问题,最后看了官方文档明确说明这是不带mac头的。raw data就是从IP层开始的。
所以在自定义收发这类网卡数据时要注意构造的NBL不能带mac头,放心,不写mac头还是能正常发送的,还不清楚这是什么原理。(发往一个新IP地址地址,没有mac头也行,很神奇。)唯一要修改的地方是要设置NBL的属性,否则会发送不成功。代码如下:
所以在自定义收发这类网卡数据时要注意构造的NBL不能带mac头,放心,不写mac头还是能正常发送的,还不清楚这是什么原理。(发往一个新IP地址地址,没有mac头也行,很神奇。)唯一要修改的地方是要设置NBL的属性,否则会发送不成功。代码如下:
void SetNdisMediumWirelessWanNBLProperty(PNET_BUFFER_LIST pMyNBL, PMS_FILTER pFilter) { if (pFilter->MiniportMediaType == NdisMediumWirelessWan) { NdisSetNblFlag(pMyNBL, NDIS_NBL_FLAGS_IS_IPV4); PVOID value = (PVOID)RtlUshortByteSwap(0x0800); NET_BUFFER_LIST_INFO(pMyNBL, NetBufferListFrameType) = value; } }这是IPV4的,IPV6稍稍修改即可。
相关文章推荐
- socket通过多网卡收发数据
- Linux中利用RAW SOCKET直接通过网卡收发数据
- Linux中利用RAW SOCKET直接通过网卡收发数据
- 编写NDIS驱动,完全控制网卡收发报文
- Linux中利用RAW SOCKET直接通过网卡收发数据
- windowsxp网卡不能收发数据
- 数据收发的软中断以及数据从网卡发送
- 转《公文转发流程自定义的数据建模 》
- Asp.net自定义服务器控件开发小技巧: 如何正确获得回传数据
- VS2005中建立自定义数据观察器
- (转贴)使用Repeater实现自定义多列数据绑定
- [范例代码]简单的自定义Key/Value自定义数据的处理范例,但愿对新手有帮助
- COM组件中使用用户自定义数据类型
- 转《商品销售打折自定义的数据建模》
- 使用SoapHeader传递Web Serivices自定义的身份验证数据
- 使用自定义的数据源进行DataGrid控件的数据绑定
- Hibernate的自定义数据类型实现接口之一——UserType祥解
- 商品销售打折自定义的数据建模
- 数据绑定到自定义的对象
- 自定义的数据集合对象的自定义排序和显示