目 录
1.1 NDIS中间层驱动程序(NDIS Intermediate Drivers)概述 2
量子力学的建立与科技创新的评价体系
1.2 NDIS中间层驱动程序的用途 4
1.3 NDIS中间层驱动程序的开发环境 4
2 NDIS中间层驱动程序的开发 4
2.1 可分页和可丢弃代码 4
2.2 共享资源的访问同步 5
2.3 中间层驱动程序的DriverEntry函数 5
2.3.1 注册NDIS中间层驱动程序 6
2.3.1.1 注册中间层驱动程序的Miniport 6
2.3.1.2 注册中间层驱动程序的协议 8
2.4 中间层驱动程序的动态绑定 11
2.4.1 打开中间层驱动程序下层的适配器 12
2.4.2 微端口(Miniport)初始化 12
2.4.3 中间层驱动程序查询和设置操作 13
2.4.3.1 发布设置和查询请求 14
2.4.3.2 响应设置和查询请求 15
2.4.4 作为面向
连接客户程序注册中间层驱动程序 15
2.5.1.1 重用数据包 18
2.6 中间层驱动程序的限制 19
2.7 中间层驱动程序接收数据 19
2.7.1 下边界面向无连接的中间层驱动程序接收数据 19
2.7.1.1 在中间层驱动程序中实现ProtocolReceivePacket处理程序 20
2.7.1.2 在中间层驱动程序中实现ProtocolReceive处理程序 21
2.7.1.3 下边界面向无连接中间层驱动程序接收OOB数据信息 22
教育与职业>王学左派2.7.2 下边界面向连接的中间层驱动程序接收数据 22
2.7.2.1 在中间层驱动程序中实现ProtocolCoReceivePacket处理程序 23
2.7.2.2 在下边界面向连接的中间层驱动程序中接收OOB数据信息 23
2.7.3 向高层驱动程序指示接收数据包 23
2.8 通过中间层驱动程序传输数据包 23
2.8.1 传递介质相关信息 25
2.9 处理中间层驱动程序的PnP事件和PM事件 26
2.9.1 处理OID_PNP_XXX查询和设置 26
2.9.2 中间层驱动程序ProtocolPnPEvent处理程序的实现 27
2.9.3 处理规定的电源请求 28
2.9.3.1 睡眠状态的电源设置请求 28
2.9.3.2 工作状态的电源设置请求 29
2.10 中间层驱动程序复位操作 29
2.11 中间层驱动程序拆除绑定操作 30
2.12 中间层驱动程序状态指示 31
3 负载平衡和失效替换 31
3.1 关于LBFO 31
3.2 指定对LBFO的支持 32
3.3 在微端口驱动程序上实现LBFO 32
3.3.1 初始化微端口束 33
3.3.2 平衡微端口驱动程序的工作量 33
3.3.3 在主微端口失效后提升一个次微端口 34
4.1 用于安装网络组件的组件和文件 34
4.2 创建网络INF文件 35
4.2.1 网络INFS文件名的约定 35
4.2.2 网络INF文件的版本节 35
4.2.3 网络INF文件的模型节 36
4.2.4 INF文件的DDInstall节 37
4.2.5 删除节 38
4.2.6 ControlFlags节 39
4.2.7 网络INF文件的add-registry-sections 39
表格 1 缩略语表
项目 | 英文描述 | 中文描述 |
NDIS | Network Driver Interface Specification | 网络驱动程序接口标准 |
IMD | Intermediate Drivers | 中间层驱动 |
TDI | Transport driver Interface | 传输驱动程序接口 |
NIC | Network Interface Card | 网络接口卡 |
SP | Service Pack | 服务包 |
LAN | Local Area Network | 局域网 |
LAN-E | LAN Emulation | 局域网仿真 |
NAT | 地球物理学报Network Address Translation | 网络地址转换 |
LBFO | Load Balancing And Fail-Over | 负载平衡和失效替换 |
DDK | Device Drivers Kit | 设备驱动程序开发包 |
SMP | Symmetry Multiprocessing | 对称多处理 |
OS | Operating System | 操作系统 |
IDE | Integrated Development Environment | 集成开发环境 |
| | |
红楼三人行1 NDIS中间层驱动程序
1.1 NDIS中间层驱动程序(NDIS Intermediate Drivers)概述
刘宋微软Windows网络驱动程序接口标准(NDIS 4.0)和Windows NT 4.0(SP3)引入了一种新的NDIS驱动程序,它可以嵌在NDIS 传输驱动程序TDI(如,TCP/IP)和底层的NDIS网络接口驱动程序的中间。这种新类型的驱动程序被称为NDIS中间层驱动,如图表 1。NDIS(网络驱动器接口标准)中间层驱动程序在其上边界导出MiniportXxx函数,在其下边界导出ProtocalXxx函数。该驱动程序在其上边界仅提供面向无连接通信支持,而在其下边界,则即可支持面向无连接通信,也可支持面向连接通信。
中间层驱动程序的微端口部分(上边界)必须是非串行的,系统将依赖这些非串行驱动程序,而不是NDIS对MiniportXxx函数的操作进行串行化处理和对内部生成的输出包进行排队操作提供良好界导出TDI驱动程序__________________________________________________________________________________________________________________,这样驱动程序只要保持很小的临界区(每次只能有一个线程执行该代码)就能提供性能良好的全双工操作。但是这些非串行Miniport要受到更多也更严格的设计要求的限制,往往要为此付出更多的调试和测试时间。
中间层驱动程序是一种典型的层次结构程序,它基于一个或多个NDIS NIC驱动程序,其上层是一个向上层提供TDI(传输驱动程序接口)支持的传输驱动程序(也可能是多层结构)。从理论上讲,一个中间层驱动程序也可以是基于其他中间层驱动程序或作为其他中间层驱动程序的低层出现的,尽管这种方案未必能展现更好的性能。
中间层驱动程序的一个示例是LAN仿真中间层驱动程序,其上层是一个早期传输驱动程序,下层是一个非LAN介质的微端口 NIC驱动程序。该驱动程序从上层接收LAN格式的数据包并将其转换为本地网卡的介质格式,然后将其发送到那个NIC的NDIS 微端口。接收数据时,该驱动程序将低层网卡驱动程序送来的数据包转换为LAN兼容格式,最后向上层传输驱动程序提交这些转换过的数据包。
例如,NDISWAN就具有一些上述特征。NDISWAN将数据包从上层的传输LAN格式转换为WAN数据包格式,或者将数据包从低层的网卡驱动WAN格式转换为LAN数据包格式。另外,如果低层NIC硬件不支持这些功能,那么NDISWAN也可提供诸如压缩、加密和端对端协议(PPP)等的数据格式化功能。NDISWAN为在NDIS API和网卡驱动程序之间进行通信提供了一个专用接口,同时,NDISWAN也将协议绑定映射为活动连接请求。