Win10Pcap驱动部分学习
来源:互联网 发布:淘宝限时抢购软件 编辑:程序博客网 时间:2024/05/13 09:15
Win10Pcap驱动部分学习
Win10Pcap简介
win10Pcap在win10下运行。Win10Pcap与winPcap的动态库兼容,安装Win10Pacp的动态库之后,可以支持Wireshark 以及其它的依赖于winpcap的程序。
Win10Pcap特性
1.在win10 x86以及x64系统下运行稳定
2.通过NDIS6.x驱动模型实现
3.同样支持win8.1,8,7,Server 2012 R2,Server 2012以及Server 2008 R2的32位与64位系统。
4.是基于GPLv2许可的开源程序
5.支持IEEE802.1Q协议
6.支持最多10000字节的超长帧
7.与winpcap底层二进制兼容
与winpcap的区别
WinPcap是基于NDIS 5.x驱动模型开发的。Win10Pcap就是将WinPcap使用NDIS 6.x实现,以此达到在win10上稳定运行。同时添加了代码来支持IEEE802.1Q。
一些结构体
win10pcap使用的是NDIS_PROTOCOL_DRIVER_CHARACTERISTICS结构体,说明它是一个协议驱动。
NDIS_PROTOCOL_DRIVER_CHARACTERISTICS结构体
typedef struct _NDIS_PROTOCOL_DRIVER_CHARACTERISTICS { NDIS_OBJECT_HEADER Header; UCHAR MajorNdisVersion; UCHAR MinorNdisVersion; UCHAR MajorDriverVersion; UCHAR MinorDriverVersion; ULONG Flags; NDIS_STRING Name; SET_OPTIONS_HANDLER SetOptionsHandler; BIND_HANDLER_EX BindAdapterHandlerEx; UNBIND_HANDLER_EX UnbindAdapterHandlerEx; OPEN_ADAPTER_COMPLETE_HANDLER_EX OpenAdapterCompleteHandlerEx; CLOSE_ADAPTER_COMPLETE_HANDLER_EX CloseAdapterCompleteHandlerEx; NET_PNP_EVENT_HANDLER NetPnPEventHandler; UNINSTALL_PROTOCOL_HANDLER UninstallHandler; OID_REQUEST_COMPLETE_HANDLER OidRequestCompleteHandler; STATUS_HANDLER_EX StatusHandlerEx; RECEIVE_NET_BUFFER_LISTS_HANDLER ReceiveNetBufferListsHandler; SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER SendNetBufferListsCompleteHandler;#if (NDIS_SUPPORT_NDIS61) DIRECT_OID_REQUEST_COMPLETE_HANDLER DirectOidRequestCompleteHandler;#endif } NDIS_PROTOCOL_DRIVER_CHARACTERISTICS, *PNDIS_PROTOCOL_DRIVER_CHARACTERISTICS;
Header
NDIS_OBJECT_HEADER 结构体。设置其Type成员为NDIS_OBJECT_TYPE_PROTOCOL_DRIVER_CHARACTERISTICS
通过将Revision成员设置为以下之一来指定版本:
NDIS_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_2,为NDIS6.1版本添加了DirectOidRequestCompleteHandler成员。
设置size成员为NDIS_SIZEOF_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_2.
NDIS_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_1,NDIS6.0的原始版本。
设置size成员为NDIS_SIZEOF_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_1.
MajorNdisVersion
协议驱动使用的NDIS库的主版本。当前值为0x06。
MinorNdisVersion
NDIS的子版本。以下是可用的值以及其含义
0 NDIS 6
20 NDIS 6.20
30 NDIS 6.30
MajorDriverVersion
为协议驱动的主版本号保留。可以指定为任意值
MinorDriverVersion
为子版本号保留。可以指定为任意值
Flags
NDIS保留成员。驱动程序要设置为0
Name
驱动服务的宽字节字符串名字
SetOptionsHandler
ProtocolSetOptions函数指针
BindAdapterHandlerEx
ProtocolBindAdapterEx 函数指针.
UnbindAdapterHandlerEx
ProtocolUnbindAdapterEx函数指针
OpenAdapterCompleteHandlerEx
ProtocolOpenAdapterCompleteEx 函数指针.
CloseAdapterCompleteHandlerEx
ProtocolCloseAdapterCompleteEx函数指针。
NetPnPEventHandler
ProtocolNetPnPEvent 函数指针。
UninstallHandler
ProtocolUninstall 函数指针, 可以为NULL.
OidRequestCompleteHandler
ProtocolOidRequestComplete 函数指针.
StatusHandlerEx
ProtocolStatusEx 函数指针,可以为NULL
ReceiveNetBufferListsHandler
ProtocolReceiveNetBufferLists 函数指针.
SendNetBufferListsCompleteHandler
ProtocolSendNetBufferListsComplete 函数指针.
DirectOidRequestCompleteHandler
ProtocolDirectOidRequestComplete 函数指针.可选函数,如果驱动不支持direct OID请求接口,设置为空。
注意:
驱动调用NdisRegisterProtocolDriver 来注册特性,包括默认的驱动函数指针。协议驱动初始化一个NDIS_PROTOCOL_DRIVER_CHARACTERISTICS 结构体并将指针作为ProtocolCharacteristics 参数传入NdisRegisterProtocolDriver函数。
使用需求:
支持NDIS6.0或之后的版本
头文件:
Ndis.h
- Win10Pcap驱动部分学习
- Win10Pcap网络驱动学习(2)
- Win10Pcap网络驱动学习(3)
- 《Android系统学习》第一章:Input子系统驱动部分
- icesword 驱动部分分析
- Icesword驱动部分分析
- Icesword 驱动部分分析
- icesword 驱动部分分析
- Tiny6410部分驱动移植
- Fram 驱动部分
- Touch--驱动部分理解
- 在 Visual C++ 中使用 WinPcap / Win10Pcap
- mini2440学习之——移植LCD驱动移植代码中相关的修改部分!
- [OOAD]面向对象分析与设计之控制驱动部分设计学习总结
- <Test-Driven Development with Python>学习笔记 第一部分 测试驱动开发基础
- [转载]icesword 驱动部分分析
- ipsec驱动源代码(部分)
- 读写SPI FLASH--驱动部分
- 数据结构算法之--折半查找(二分查找BinarySearch)
- Mapper映射文件配置
- learning python in the hard way习题11~15的附加题练习
- Ubuntu 14.04系统中安装ROS Indigo
- maven打包 含src下的xml文件
- Win10Pcap驱动部分学习
- 自己编写的简单的线程池
- [BZOJ1856][SCOI2010]字符串
- 【C#】存储过程应用
- 在PC端利用fastboot将镜像烧录至开发板
- 锁
- 机器视觉光源知识总结(三)
- Kosaraju算法求有向强连通分量,缩点后是DAG的拓扑序列(从小到大)
- Linux CentOS 6.4 中安装JDK