文章摘录自《Windows内核原理与实现》一书。
在Windows的网络栈中,网络协议与网络适配器是分离的,协议驱动程序并不针对特定的网络适配器而设计,然而,当协议驱动程序正真运行时,它必须通过一个网络适配器才能发送和接收数据。协议驱动程序通过统一的接口与网络适配器驱动程序进行通信,此接口即为 Microsoft 和 3COM 于 1989 年联手开发的NDIS(Network Driver Interface Specification,网络驱动程序接口规范)。符号NDIS 的网络适配器驱动称为 NDIS 驱动程序, 或NDIS 小端口驱动程序(NDIS miniport driver)。Windows提供了NDIS 库,即 ndis.sys,作为协议驱动程序与 NDIS 驱动程序之间的桥梁。随 Windows XP 和 Windows Server 2003 一起发行的 NDIS 库是 NDIS 5.1。
NDIS 客户,即 TDI传输器,利用NDIS库提供的功能,对将要发送给NDIS 驱动程序的命令进行格式化,并发送给 NDIS 驱动程序;而 NDIS 驱动程序则利用 NDIS 库,接收请求和送回应答。图 9.4显示了 Windows 实现的NDIS结构。

NDIS 库为 NDIS 驱动程序提供了一个完全的开发环境,它并没有使用 Windows I/O 管理器的接口规范,而是自己定义了一套开发接口。所以, NDIS 驱动程序不是真正的 Windows 驱动程序,它们并不接收和处理 IRP。相反地,TDI传输器调用 NDIS 库的函数(例如 NdisAllocatePacket)

本文介绍了Windows内核中NDIS(网络驱动程序接口规范)的工作原理,包括NDIS驱动程序如何与网络适配器交互,NDIS库的作用,以及NDIS中间驱动程序的用途。NDIS驱动程序不直接处理IRP,而是通过调用NDIS库函数与上层协议驱动程序通信。此外,还探讨了NDIS驱动程序的开发要点和NDIS 6相对于NDIS 5的主要改进,如性能提升和开发模型的简化。
最低0.47元/天 解锁文章
2037

被折叠的 条评论
为什么被折叠?



