【源码】winpcap驱动程序初始化

最近上班研究虚拟打印驱动,正好winpcap也跟win驱动相关,上周把书借回来,看了几章,今天顺便做个笔记。

一. DriverEntry函数的实现步骤

分配结构体NDIS_PROTOCOL_CHARACTERISTICS--->根据操作系统的版本,定义跳过环回数据包的正确标识--->对ProtocolChar结构体初始化置零---->向NDIS库注册协议驱动程序---->设置IRP派遣函数和卸载函数--->获取系统中可用网络适配器的信息---->给每个网络适配器创建一个设备对象。

winpcap\packetNtx\driver\packet.c中line 92 DriverEntry()函数中

调用NdisRegisterProtocol()向NDIS库注册ProcotolXXX函数。

line286 getAdaptersList()用于获取系统中可用网络适配器的信息,操作失败NPF会再调用getTcpBindings试图获得TCP/IP协议所绑定的设备信息。

line426 getTcpBindings()

line516 NPF_CreateDevice()用来与设备相关联的驱动对象

 

二.DriverUnload

line237:DriverObject->DriverUnload = NPF_Unload; 指向了line620  NPF_Unload()

 

PS: 揭密chap5提到的代码是packet.c,重点讲了三个函数实现,免得剧透,就不全写了。

后期结合网友和自己看的,再整理,看看是不是把这个整理成一部分,然后把注释过的packet.c分享下

 

参考资料:《网络分析技术揭秘》

1.http://hi.baidu.com/zhanghuisky365/item/c574d5e3f36864f02b09a413

2.驱动程序启动时的入口点函数DriverEntry http://hi.baidu.com/sobiga3/item/eccde80dffcd896dd45a11fd

3.Windows驱动开发技术详解 http://blog.csdn.net/zacklin/article/details/7776254

4.http://blog.csdn.net/huang_shao_bin/article/details/5294077

http://wenku.baidu.com/view/18012173f242336c1eb95e2c.html###

你可能感兴趣的:(winpcap,packet.c)