NDIS中间层驱动学习小记

大二暑假,据说拥有驱动开发基础,boss给出了个网络过滤驱动的题目,刚开始以为会是很简单的,就一直在TDI层上着手,后来才发现TDI在xp之后就有可能不支持了,所以在了解其处理流程之后果断专项NDIS中间层协议驱动。

NDIS横跨传输层/网络层/数据链路层,NDIS负责上下层驱动程序间服务原语与驱动程序入口之间的转换,分派消息通知。NDIS提供三个层次的接口:网络接口卡驱动程序(NIC)、中间层驱动程序(MD)和协议驱动程序,中间层协议驱动(MD)是介于NDIS协议驱动程序与小端口驱动程序(网络接口卡驱动程序NIC)之间的驱动。

MD:  中间层协议驱动是网卡驱动和协议驱动之间的桥梁。插入自己的中间层驱动,从而可以截获网络封包,并重新进行封包、加密、网络地址转换、过滤和认证等操作。可以处理更低级的操作、功能强大,但是编程接口复杂,自动化安装困难,容易导致网络瘫痪。

 NIC: 下端直接控制网络接口卡硬件,上端提供接口,处理初始化网卡、停止网卡、发送和接受数据包。

 PD:  接收来自网卡或中间驱动程序的信息。

 windows内核网络驱动的总体格局(从下至上):小端口驱动实现了对网卡硬件的驱动,包括对其中各个寄存器的访问、中断处理等。协议驱动将链路层、网络层和传输层集合在一起的一个驱动模块。上层是传输驱动界面(TDI)。TDI上层是用来实现Socket机制的AFD驱动模块。

之后要补上学习的是(windows内核情景分析第十章 第一小节)

今天遇到的bug,NdisMRegisterDevice函数的一个参数声明错误

NDIS_STATUS NdisMRegisterDevice(
  _In_  NDIS_HANDLE      NdisWrapperHandle,
  _In_  PNDIS_STRING     DeviceName,
  _In_  PNDIS_STRING     SymbolicName,
  _In_  PDRIVER_DISPATCH MajorFunctions[],
  _Out_ PDEVICE_OBJECT   *pDeviceObject,
  _Out_ NDIS_HANDLE      *NdisDeviceHandle
);
其中_Out_ NDIS_HANDLE *NdisDeviceHandle 声明为PDEVICE_OBJECT类型,导致以后调用时一直蓝屏。

今天的想法,回去要把windows编程mfc再好好琢磨琢磨,然后准备开始在网上接手些项目做做,当然开学还要继续深入学习windows内核及驱动。

明天要做的,给我弟买个包,养成早睡的早起的好习惯,一天三锻炼,

具体分析的可以参考http://bbs.pediy.com/showthread.php?t=151300

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页