第五卷网络驱动程序设计指南 第一部分网络驱动程序 第一章网络驱动程序设计指南的向导 第二章内核模式驱动程序的网络结构. 2.1 Windows2000网络结构和OSI模型 22NDS驱动程序 2.2.1NDS微端口驱动程序 477889 2.22NDS中间层驱动程序 2.2.3NDS协议驱动程序 23TD驱动程序 2.4网络驱动程序环境 241无连接环境的网络驱动程序 242面向连接环境下的网络驱动程序 2.4.3WAN网络驱动程序的环境 第三章网络驱动程序编程要点 3.1可移植性 3.2多处理器支持 222 3.3 IRQL 34同步和指示 3.5包结构 3.6使用共享内存 3.7异步O和完成函数 第二部分微端口NC驱动程序 第一章 NDIS NIC微端口驱动程序 1.1NC微端口驱动程序类型 12网络接口卡支持 1.3微端口驱动程序代码的重要特征 1.3. MiniportXxxI函数 1.3.2与NDS库链接 1.3.3微端口适配器环境 1.34VC环境 1.3.5网络OID 4驱动程序例子 第二章NC微端口操作和函数概要 21NIC微端口操作 2.1.1初始化NDS库和注册微端口驱动程序 2.12注册网络接口卡 2.1.3对查询和设置微端口信息作出响应 2.14产生,激活,去活,和删除虚连接 2.1.5发送数据 2.1.5.1多包发送 21.52单包发送
- -I 第五卷 网络驱动程序设计指南...................................................................................... 12 第一部分 网络驱动程序.......................................................................................... 13 第一章 网络驱动程序设计指南的向导.............................................................. 14 第二章 内核模式驱动程序的网络结构.............................................................. 17 2.1 Windows 2000 网络结构和OSI模型.................................................... 17 2.2 NDIS驱动程序..................................................................................... 18 2.2.1 NDIS微端口驱动程序................................................................. 18 2.2.2 NDIS中间层驱动程序................................................................. 19 2.2.3 NDIS协议驱动程序..................................................................... 20 2.3 TDI驱动程序........................................................................................ 20 2.4 网络驱动程序环境.............................................................................. 20 2.4.1 无连接环境的网络驱动程序....................................................... 20 2.4.2 面向连接环境下的网络驱动程序................................................ 21 2.4.3 WAN网络驱动程序的环境 .......................................................... 22 第三章 网络驱动程序编程要点........................................................................ 23 3.1 可移植性............................................................................................ 23 3.2 多处理器支持..................................................................................... 23 3.3 IRQL................................................................................................... 24 3.4 同步和指示......................................................................................... 24 3.5 包结构................................................................................................ 26 3.6 使用共享内存..................................................................................... 27 3.7 异步I/O和完成函数............................................................................. 27 第二部分 微端口NIC驱动程序................................................................................ 29 第一章 NDIS NIC微端口驱动程序.................................................................... 30 1.1 NIC微端口驱动程序类型...................................................................... 30 1.2 网络接口卡支持.................................................................................. 30 1.3 微端口驱动程序代码的重要特征......................................................... 32 1.3.1 MiniportXxx函数........................................................................ 32 1.3.2 与NDIS库链接........................................................................... 32 1.3.3 微端口适配器环境..................................................................... 32 1.3.4 VC环境...................................................................................... 33 1.3.5 网络OID.................................................................................... 33 1.4 驱动程序例子..................................................................................... 34 第二章 NIC微端口操作和函数概要.................................................................. 35 2.1 NIC微端口操作.................................................................................... 35 2.1.1 初始化NDIS库和注册微端口驱动程序........................................ 35 2.1.2 注册网络接口卡........................................................................ 35 2.1.3 对查询和设置微端口信息作出响应............................................ 36 2.1.4 产生,激活,去活,和删除虚连接............................................ 36 2.1.5 发送数据................................................................................... 37 2.1.5.1 多包发送......................................................................... 37 2.1.5.2 单包发送......................................................................... 38
2.1.6指示和传递接收的数据 2.1.6.1多包接收 2.1.62单包接收 2.1.7指示状态 218复位网络接口卡 2.1.9终止一个微端口NIC驱动程序 22微端口上层函数 2.2.1无连接微端口的上层函数 2.22面向连接微端口的上层函数 23由微端口调用的NDS函数 2.3.1NDS提供的初始化和注册函数 2.32NDS提供的硬件设置函数 233NDS提供的IO端口函数 234NDS数据的与DMA相关的函数 235NDS提供的中断处理函数 236NDS提供的同步函数 2.37NDS提供的状态函数 2.38NDS为无连接微端口提供的发送和接收函数 2.39NDS为面向连接微端口提供的发送和接收函数 23.10NDS提供的带外数据宏 2311NDS提供的包和缓存处理函数 2.3.12NDS提供的支持函数 2.3.13NDS提供的媒体相关宏 999100 第三章NC微端口驱动程序入口点和初始化 3.1NDS微端口驱动程序入口函数 3.1.1初始化包裹 3.12注册微端口 3.1.2.1指定NDS版本号 3.1.2.2注册 MiniportXxx函数 3.1.2.3为中断支持的注册处理程序 3.1.2.4为无连接微端口选择一个发送函数 3.1.2.5为无连接微端口选择接收函数 3.1.2.6注册一个分配完成处理程序 31.27注册一个挂起检测 Check For Hang)处理程序 3.2NDIS微端口初始化. 3.21注册一个NIC. 3.2.1.1分配一个适配器指定的环境区域 3.2.1.2读取配置信息 3.2.1.3注册NC 3.22声明资源 3.221分配内存 3.22.2注册端口 3.22.3总线管理器DMA设备初始化 3.224可编程IO设备初始化
- II- 2.1.6 指示和传递接收的数据.............................................................. 38 2.1.6.1 多包接收......................................................................... 39 2.1.6.2 单包接收......................................................................... 39 2.1.7 指示状态................................................................................... 39 2.1.8 复位网络接口卡........................................................................ 40 2.1.9 终止一个微端口NIC驱动程序.................................................... 40 2.2 微端口上层函数.................................................................................. 40 2.2.1 无连接微端口的上层函数.......................................................... 41 2.2.2 面向连接微端口的上层函数....................................................... 42 2.3 由微端口调用的NDIS函数................................................................... 43 2.3.1 NDIS提供的初始化和注册函数................................................... 44 2.3.2 NDIS提供的硬件设置函数.......................................................... 45 2.3.3 NDIS提供的I/O端口函数............................................................ 45 2.3.4 NDIS数据的与DMA相关的函数.................................................. 46 2.3.5 NDIS提供的中断处理函数.......................................................... 47 2.3.6 NDIS提供的同步函数................................................................. 48 2.3.7 NDIS提供的状态函数................................................................. 49 2.3.8 NDIS为无连接微端口提供的发送和接收函数.............................. 49 2.3.9 NDIS为面向连接微端口提供的发送和接收函数........................... 50 2.3.10 NDIS提供的带外数据宏............................................................ 50 2.3.11 NDIS提供的包和缓存处理函数................................................. 51 2.3.12 NDIS提供的支持函数............................................................... 53 2.3.13 NDIS提供的媒体相关宏............................................................ 55 第三章 NIC微端口驱动程序入口点和初始化.................................................... 57 3.1 NDIS微端口驱动程序入口函数............................................................. 57 3.1.1 初始化包裹............................................................................... 57 3.1.2 注册微端口............................................................................... 58 3.1.2.1 指定NDIS版本号.............................................................. 58 3.1.2.2 注册MiniportXxx函数....................................................... 58 3.1.2.3 为中断支持的注册处理程序............................................. 60 3.1.2.4 为无连接微端口选择一个发送函数................................... 61 3.1.2.5 为无连接微端口选择接收函数.......................................... 61 3.1.2.6 注册一个分配完成处理程序............................................. 62 3.1.2.7 注册一个挂起检测(CheckForHang) 处理程序.................... 62 3.2 NDIS微端口初始化.............................................................................. 62 3.2.1 注册一个NIC............................................................................. 63 3.2.1.1 分配一个适配器指定的环境区域...................................... 64 3.2.1.2 读取配置信息.................................................................. 64 3.2.1.3 注册NIC.......................................................................... 64 3.2.2 声明资源................................................................................... 65 3.2.2.1 分配内存......................................................................... 65 3.2.2.2 注册端口......................................................................... 66 3.2.2.3 总线管理器DMA设备初始化............................................ 66 3.2.2.4可编程I/O设备初始化........................................................ 67
3.22.5内存映射设备初始化 3.22.6从属DMA设备初始化 3.23注册一个中断 3.24注册一个关闭函数 3.2.5初始化轮询时钟 3.26在初始化当中的同步 3.27在初始化时处理错误 3.3查询微端口信息 3.4减少微端口初始化时间 第四章数据传输 1中断处理 4.2DPC处理程序 43带外(OOB)数据包 43.1等待发送的OOB数据 43.2接收的OOB数据 4.4发送包 01446678900 44.1无连接微端口的多包传送 44.1.1串行微端口的多包传送 44.1.2非串行微端口的多包传送 44.2无连接微端口的单包发送 44.3面向连接微端口的多包发送 444发送数据前的内存同步 44.5发送步骤 44.5.1在总线控制器 DMA NIC上发送包 44.5.2在PIO设备上发送单包 44.5.3使用板上内存发送包 4.5非串行微端口 非串行微端口的NDS要求 45.2非串行微端口的驱动程序内部要求 46接收数据 46.1无连接和面向连接微端口的多包接收 68888982g 4.6.2无连接微端口的单包接收 4.6.3接收数据的高速缓存( Cache)因素 46.4接收数据的步骤 4641接收期间的包管理 46.42在总线控制器 DMA NIC上接收数据 464.3在 PIO NIC上接收数据 4644在内存映射设备上接收数据 47保持统计量 4.88021P包的优先权 4.8.1查询802.1p优先权支持 4.8.2802.1优先权的包支持 483为发送和接收指定包的大小 48.4默认情况下禁止802.1p的优先杈支持
- III- 3.2.2.5 内存映射设备初始化........................................................ 68 3.2.2.6 从属DMA设备初始化....................................................... 68 3.2.3 注册一个中断............................................................................ 68 3.2.4 注册一个关闭函数..................................................................... 69 3.2.5 初始化轮询时钟........................................................................ 69 3.2.6 在初始化当中的同步................................................................. 70 3.2.7 在初始化时处理错误................................................................. 70 3.3 查询微端口信息.................................................................................. 70 3.4 减少微端口初始化时间....................................................................... 71 第四章 数据传输............................................................................................. 74 4.1 中断处理........................................................................................... 74 4.2 DPC处理程序.................................................................................. 76 4.3 带外(OOB)数据包....................................................................... 76 4.3.1 等待发送的OOB数据............................................................... 77 4.3.2 接收的OOB数据...................................................................... 78 4.4 发送包............................................................................................ 79 4.4.1 无连接微端口的多包传送......................................................... 80 4.4.1.1 串行微端口的多包传送.................................................... 80 4.4.1.2 非串行微端口的多包传送................................................. 81 4.4.2 无连接微端口的单包发送......................................................... 81 4.4.3 面向连接微端口的多包发送....................................................... 82 4.4.4 发送数据前的内存同步............................................................ 83 4.4.5 发送步骤................................................................................... 84 4.4.5.1 在总线控制器DMA NIC上发送包.................................. 84 4.4.5.2 在PIO设备上发送单包.................................................... 86 4.4.5.3 使用板上内存发送包...................................................... 87 4.5 非串行微端口.................................................................................... 88 4.5.1 非串行微端口的NDIS要求....................................................... 88 4.5.2 非串行微端口的驱动程序内部要求........................................... 88 4.6 接收数据........................................................................................... 89 4.6.1 无连接和面向连接微端口的多包接收....................................... 89 4.6.2 无连接微端口的单包接收......................................................... 92 4.6.3 接收数据的高速缓存(Cache)因素......................................... 93 4.6.4 接收数据的步骤....................................................................... 93 4.6.4.1 接收期间的包管理......................................................... 93 4.6.4.2 在总线控制器DMA NIC上接收数据................................ 94 4.6.4.3 在PIO NIC上接收数据.................................................... 94 4.6.4.4 在内存映射设备上接收数据........................................... 95 4.7 保持统计量....................................................................................... 95 4.8 802.1P 包的优先权............................................................................ 96 4.8.1 查询802.1p优先权支持............................................................. 97 4.8.2 802.1优先权的包支持............................................................... 97 4.8.3 为发送和接收指定包的大小..................................................... 98 4.8.4 默认情况下禁止802.1p的优先权支持........................................ 98
第五章获取和设置WM的微端口信息及NDIS支持. 51NDS管理信息和OD 52查询微端口信息 5.21无连接微端口的查询 522面向连接微端口的查询 53设置微端口信息 53.1为无连接微端口设置信息 53.2为面向连接微端口设置信息 533设置微端口信息的时机 54报告硬件状态 5.5WM的NDS支持 5.5.1用wM注册与注销NDS微端口 552OID和微端口状态的GUD映射 553支持命名VC 5.54NDS支持的WM操作 5.55向WM注册标准微端口OID 556向WM注册的标准微端口状态 5.57定制OD与状态指示 108 5.57.1填充 NDIS GUID 557.2包括MOF文件 第六章微端口的电源管理 10 6.1电源管理的需求与可选的OD l10 62网络设备电源状态 6.3网络唤醒事件 63.1连接改变唤醒 632网络唤醒帧 l12 63.3魔包唤醒 113 634启用唤醒事件 13 6.3.5处理唤醒事件 13 64处理 OID PNP QUERY POWER 6.5处理 OID PNP SET POWER 6.51转入睡眠状态 l14 652转入工作状态 66早期微端口的电源管理 第七章重置,停止和关闭 116 7.1硬件重置( Reset) 16 7.2停止(Halt)处理程序 16 7.3关闭( Shutdown)处理程序 第八章广域网微端口NC驱动程序 l19 8.1RAS体系结构 119 82 NDIS WAN概述 8.3网络卡、绑定、和连接 84广域网微端口驱动程序的实现 841标准广域网微端口驱动程序与局域网微端口驱动程序的区别.!25
- IV- 第五章 获取和设置WMI的微端口信息及NDIS支持........................................... 99 5.1 NDIS管理信息和OID......................................................................... 99 5.2 查询微端口信息................................................................................ 99 5.2.1 无连接微端口的查询...............................................................100 5.2.2 面向连接微端口的查询...........................................................101 5.3 设置微端口信息...............................................................................102 5.3.1 为无连接微端口设置信息........................................................102 5.3.2 为面向连接微端口设置信息....................................................102 5.3.3 设置微端口信息的时机...........................................................103 5.4 报告硬件状态...................................................................................103 5.5 WMI的NDIS支持.............................................................................104 5.5.1 用WMI注册与注销NDIS微端口...............................................104 5.5.2 OID和微端口状态的GUID映射................................................104 5.5.3 支持命名VC...........................................................................104 5.5.4 NDIS支持的WMI操作.............................................................105 5.5.5 向WMI注册标准微端口OID....................................................105 5.5.6 向WMI注册的标准微端口状态................................................107 5.5.7 定制OID与状态指示...............................................................108 5.5.7.1 填充NDIS_GUID...........................................................108 5.5.7.2 包括MOF文件...............................................................109 第六章 微端口的电源管理..............................................................................110 6.1 电源管理的需求与可选的OID...........................................................110 6.2 网络设备电源状态............................................................................ 111 6.3 网络唤醒事件...................................................................................112 6.3.1 连接改变唤醒.........................................................................112 6.3.2 网络唤醒帧.............................................................................112 6.3.3 魔包唤醒................................................................................113 6.3.4 启用唤醒事件.........................................................................113 6.3.5 处理唤醒事件.........................................................................113 6.4 处理OID_PNP_QUERY_POWER.......................................................114 6.5 处理OID_PNP_SET_POWER ............................................................114 6.5.1 转入睡眠状态.........................................................................114 6.5.2 转入工作状态.........................................................................114 6.6 早期微端口的电源管理.....................................................................115 第七章 重置,停止和关闭.............................................................................116 7.1 硬件重置(Reset)...........................................................................116 7.2 停止(Halt)处理程序......................................................................116 7.3 关闭(Shutdown)处理程序..............................................................117 第八章 广域网微端口 NIC驱动程序................................................................119 8.1 RAS 体系结构.................................................................................119 8.2 NDISWAN 概述...............................................................................121 8.3 网络卡、绑定、和连接.....................................................................123 8.4 广域网微端口驱动程序的实现..........................................................124 8.4.1 标准广域网微端口驱动程序与局域网微端口驱动程序的区别...125
842 CoNDIS广域网微端口驱动程序的附加特性 843广域网微端口驱动程序提供的服务 84.3.1注册为广域网微端口驱动程序 843.2查询广域网微端口驱动程序的信息 843.3设置广域网小段口驱动程序的状态 8434在广域网微端口驱动程序上发送数据 844广域网微端口驱动程序做出的指示 8441指示从标准广域网微端口驱动程序接收数据 135 8.5广域网包的组帧 138 851异步帧结构 852X.25帧结构 8.53ISDN和 Switched-56K帧结构 86标准NDS之上的电话服务扩展 86.1 NDISTAPI概述 862线路设备、地址和呼叫 863设置和查询请求 8.64保持状态信息 86.5建立句柄 8.6.6TAP注册 867TAPI初始化 8.6.8打开线路 869接受内入呼叫 143 86.10产生TAPI呼叫 8611主动事件处理 86.2Line-Up指示 86.13关闭呼叫线路 147 86.14 NDISTAPI接口 148 8.7使用支持电话服务的 CONDIS扩展 8.7.1 NDPROXY概述 87.2 CONDIS TAPI注册 873 CONDIS TAPI初始化 8.74建立外出呼叫 8.7.5接受内入呼叫 87.6 CONDIS TAPI关闭 8.7.7语音流对呼叫管理器的要求 87.7.1响应ODCO_ TAPI LINE CAPS查询 8772为外出呼叫指定参数 877.3为内入呼叫指定参数 8.7.8在面向连接NDS之上支持电话服务的非广域网专用的扩展.162 第九章任务卸载 91查询任务卸载能力 9.1.1报告NIC的校验和性能 9.1.2报告NC的IP安全性性能 9.1.3报告NC的TCP包分段性能
- V- 8.4.2 CoNDIS广域网微端口驱动程序的附加特性.............................125 8.4.3 广域网微端口驱动程序提供的服务...........................................126 8.4.3.1 注册为广域网微端口驱动程序.......................................126 8.4.3.2 查询广域网微端口驱动程序的信息................................127 8.4.3.3 设置广域网小段口驱动程序的状态................................132 8.4.3.4 在广域网微端口驱动程序上发送数据............................133 8.4.4 广域网微端口驱动程序做出的指示..........................................135 8.4.4.1 指示从标准广域网微端口驱动程序接收数据................135 8.5 广域网包的组帧...............................................................................138 8.5.1 异步帧结构.............................................................................138 8.5.2 X.25帧结构.............................................................................138 8.5.3 ISDN和Switched-56K帧结构....................................................138 8.6 标准NDIS之上的电话服务扩展.........................................................138 8.6.1 NDISTAPI概述.......................................................................139 8.6.2 线路设备、地址和呼叫...........................................................139 8.6.3 设置和查询请求......................................................................140 8.6.4 保持状态信息.........................................................................140 8.6.5 建立句柄................................................................................141 8.6.6 TAPI注册................................................................................141 8.6.7 TAPI初始化............................................................................142 8.6.8 打开线路................................................................................142 8.6.9 接受内入呼叫.........................................................................143 8.6.10 产生TAPI呼叫.........................................................................144 8.6.11 主动事件处理.......................................................................145 8.6.12 Line-Up指示..........................................................................145 8.6.13 关闭呼叫线路.......................................................................147 8.6.14 NDISTAPI接口......................................................................148 8.7 使用支持电话服务的CoNDIS扩展.....................................................153 8.7.1 NDPROXY概述.................................................................153 8.7.2 CoNDIS TAPI注册...................................................................153 8.7.3 CoNDIS TAPI初始化...............................................................154 8.7.4 建立外出呼叫.........................................................................155 8.7.5 接受内入呼叫.........................................................................157 8.7.6 CoNDIS TAPI关闭...................................................................159 8.7.7 语音流对呼叫管理器的要求....................................................160 8.7.7.1 响应OID_CO_TAPI_LINE_CAPS查询............................160 8.7.7.2 为外出呼叫指定参数.....................................................161 8.7.7.3 为内入呼叫指定参数.....................................................161 8.7.8 在面向连接NDIS之上支持电话服务的非广域网专用的扩展.....162 第九章 任务卸载...........................................................................................162 9.1 查询任务卸载能力............................................................................163 9.1.1 报告NIC的校验和性能............................................................164 9.1.2 报告NIC的IP安全性性能.........................................................165 9.1.3 报告NIC的TCP包分段性能......................................................166
92启用任务卸载能力 93停用任务卸载能力 94访问Per- Packet信息 9.5卸载ICP/P校验和任务 9.6卸载IP安全任务 97卸载大TCP包分段 9.8卸载组合 99使用注册表键值激活和禁止任务卸载 第十章负载平衡和失效替换 176 10.1关于LBFO 176 10.2指定对LBFO的支持 3在微端口驱动程序上实现LBFO 10.3.1初始化微端口束 10.32平衡微端口驱动程序的工作量 103.3在主微端口失效后提升一个次微端口 第十一章快速转发路径 11.1关于FFP 111使用一个NC的FFP 112使用多个NC的FFP 111.3IP转发 1.14FFP和包过滤 112NIDS中的FFP支持 113为P转发在微端口实现FFP 第十二章带WDM低级接口的微端口驱动程序 12.1WDM低层微端口 12.2注册WDM低层的微端口函数 184 12.3初始化WDM低层微端口 24发布命令与远程设备通信 1241在总线上发送包 1242在总线上接收包 125WDM低层的实现要点 12.6WDM低层的编译标志 第十三章IrDA微端口NIC驱动程序 l88 13.1IrDA微端口驱动程序简述 132IrDA体系结构 13.3IrDA协议驱动程序 134IrDA介质特征 13.41通信连接速度 13.42通信连接回转时间 1343接收器同步 13.5 IRLAP帧格式 13.5.1帧格式简述 13.52帧信息的使用 13.53地址成员
- VI- 9.2 启用任务卸载能力............................................................................167 9.3 停用任务卸载能力............................................................................167 9.4 访问Per-Packet信息.....................................................................167 9.5 卸载TCP/IP校验和任务.....................................................................169 9.6 卸载IP安全任务................................................................................170 9.7 卸载大TCP包分段............................................................................173 9.8 卸载组合..........................................................................................175 9.9 使用注册表键值激活和禁止任务卸载................................................176 第十章 负载平衡和失效替换.......................................................................176 10.1 关于LBFO......................................................................................176 10.2 指定对LBFO的支持........................................................................177 10.3 在微端口驱动程序上实现LBFO.......................................................177 10.3.1 初始化微端口束....................................................................178 10.3.2 平衡微端口驱动程序的工作量...............................................178 10.3.3 在主微端口失效后提升一个次微端口....................................178 第十一章 快速转发路径..............................................................................179 11.1 关于FFP .........................................................................................179 11.1.1 使用一个NIC的FFP...............................................................179 11.1.2 使用多个NIC的FFP...............................................................180 11.1.3 IP转发..................................................................................180 11.1.4 FFP和包过滤.........................................................................181 11.2 NIDS中的FFP支持..........................................................................181 11.3 为IP转发在微端口实现FFP..............................................................182 第十二章 带WDM低级接口的微端口驱动程序...............................................184 12.1 WDM低层微端口............................................................................184 12.2 注册WDM低层的微端口函数..........................................................184 12.3 初始化WDM低层微端口.................................................................185 12.4 发布命令与远程设备通信.................................................................186 12.4.1 在总线上发送包....................................................................186 12.4.2 在总线上接收包....................................................................186 12.5 WDM低层的实现要点.....................................................................186 12.6 WDM低层的编译标志.....................................................................187 第十三章 IrDA微端口NIC驱动程序...............................................................188 13.1 IrDA微端口驱动程序简述...............................................................188 13.2 IrDA体系结构.................................................................................189 13.3 IrDA协议驱动程序..........................................................................189 13.4 IrDA介质特征.................................................................................189 13.4.1 通信连接速度.......................................................................190 13.4.2 通信连接回转时间................................................................190 13.4.3 接收器同步...........................................................................191 13.5 IrLAP帧格式...................................................................................192 13.5.1 帧格式简述.............................................................................192 13.5.2 帧信息的使用.......................................................................193 13.5.3 地址成员..............................................................................193
13.6IrDA微端口驱动程序包编码方案 13.6.1SIR编码 136.2MR编码 136.3FR编码 13.7发送和接收帧序列 138即插即用 13.8.1非即插即用外部串行连接SIR适配器 13.8.2非即插即用内部SIR适配器或者象串口一样错误地呈现于外的内 部SIR适配器 196 13.8.3即插即用外部串行连接SIR适配器 196 1384即插即用内部SIR适配器 13.8.5非即插即用总线连接FIR适配器 13.8.6即插即用总线连接FIR适配器 第三部分NDS中间层驱动程序和TD驱动程序 第一章 NDS中间层驱动程序 1.1中间层驱动程序的 Driver Entry函数 1.1.1注册NDS中间层驱动程序 1.1.1.1注册中间层驱动程序的 Miniport 202 1.1.1.2注册中间层驱动程序的协议 1.2中间层驱动程序的动态绑定 12.1打开中间层驱动程序下层的适配器 12.2微端口初始化 1.23中间层驱动程序查询和设置操作 124作为面向连接客户程序注册中间层驱动程序 21l 1.3中间层驱动程序数据包管理 14中间层驱动程序的限制 215 1.5中间层驱动程序接收数据 215 1下边界面向无连接的中间层驱动程序接收数据 52下边界面向连接的中间层驱动程序接收数据 218 1.53向高层驱动程序指示接收数据包 219 16通过中间层驱动程序传输数据包 1.6.1传递介质相关信息 1.7处理中间层驱动程序的PnP事件和PM事件 1.7.1处理 OID PNP XXX查询和设置 1.7.2中间层驱动程序 ProtocolPnPEvent处理程序的实现. 1.7.3处理规定的电源请求 224 18中间层驱动程序复位操作 1.9中间层驱动程序拆除绑定操作. 1.10中间层驱动程序状态指示 第二章 NDS协议驱动程序 21协议 Driver Entry及其初始化 2.1.1注册NDIS协议驱动程序 2.1.2打开中间层驱动程序低层的适配器 232 2.1.3协议驱动程序查询和设置操作 233
- VII- 13.6 IrDA微端口驱动程序包编码方案.....................................................193 13.6.1 SIR编码................................................................................194 13.6.2 MIR编码...............................................................................194 13.6.3 FIR编码................................................................................194 13.7 发送和接收帧序列..........................................................................195 13.8 即插即用........................................................................................195 13.8.1 非即插即用外部串行连接SIR适配器......................................195 13.8.2 非即插即用内部SIR适配器或者象串口一样错误地呈现于外的内 部SIR适配器.....................................................................................196 13.8.3 即插即用外部串行连接SIR适配器.........................................196 13.8.4 即插即用内部SIR适配器.......................................................196 13.8.5 非即插即用总线连接FIR适配器.............................................197 13.8.6 即插即用总线连接FIR适配器................................................197 第三部分NDIS中间层驱动程序和TDI驱动程序........................................................199 第一章 NDIS中间层驱动程序.................................................................199 1.1中间层驱动程序的DriverEntry函数.......................................................201 1.1.1 注册NDIS中间层驱动程序........................................................201 1.1.1.1注册中间层驱动程序的Miniport.........................................202 1.1.1.2注册中间层驱动程序的协议..............................................204 1.2 中间层驱动程序的动态绑定...............................................................206 1.2.1 打开中间层驱动程序下层的适配器...........................................207 1.2.2 微端口初始化...........................................................................208 1.2.3 中间层驱动程序查询和设置操作...............................................209 1.2.4作为面向连接客户程序注册中间层驱动程序...............................211 1.3中间层驱动程序数据包管理.................................................................212 1.4 中间层驱动程序的限制......................................................................215 1.5 中间层驱动程序接收数据...................................................................215 1.5.1下边界面向无连接的中间层驱动程序接收数据............................215 1.5.2下边界面向连接的中间层驱动程序接收数据...............................218 1.5.3向高层驱动程序指示接收数据包.................................................219 1.6通过中间层驱动程序传输数据包..........................................................219 1.6.1传递介质相关信息......................................................................221 1.7处理中间层驱动程序的PnP事件和PM事件............................................222 1.7.1处理OID_PNP_XXX查询和设置.................................................222 1.7.2中间层驱动程序ProtocolPnPEvent处理程序的实现.......................223 1.7.3处理规定的电源请求..................................................................224 1.8中间层驱动程序复位操作.....................................................................225 1.9中间层驱动程序拆除绑定操作..............................................................226 1.10中间层驱动程序状态指示...................................................................227 第二章 NDIS协议驱动程序 ....................................................................228 2.1 协议DriverEntry及其初始化................................................................229 2.1.1注册NDIS协议驱动程序.............................................................229 2.1.2 打开中间层驱动程序低层的适配器......................................232 2.1.3 协议驱动程序查询和设置操作..................................................233
2.1.4作为呼叫管理器或者面向连接客户程序进行注册 234 协议驱动程序数据包管理 23协议驱动程序的动态绑定 39 24协议驱动程序接收数据 241下边界面向无连接的中间层驱动程序接收数据 2.4.1.1 在中间层驱动程序中实现 Protocol ReceivePacket处理程 序 241 2.41.2在协议驱动程序中实现 Protocol Receive处理程序 242 2.4.1.3 从面向无连接协议驱动程序中访问OOB数据信息243 242面向连接协议驱动程序接收数据 243 242.1 ProtocolCoReceive Packet处理程序实现 2.4.2.2 从面向连接协议驱动程序中访问OOB数据信息244 发送协议驱动程序创建的数据包 2.51从面向无连接协议驱动程序发送数据包 2.51.1面向无连接协议驱动程序传递介质相关信息 245 2.52面向连接协议驱动程序发送数据包 2.52.1面向连接协议驱动程序传递介质相关信息 2.6处理协议驱动程序的PnP事件和PM事件 248 2.7协议驱动程序复位操作 249 2.8协议驱动程序拆除绑定操作 29协议驱动程序状态指示 第三章D传输器及其客户 3.1 传输驱动程序接口(TD) TD设备对象 3.3 TDI文件对象 3.3.1代表传输地址的文件对象 3.32代表连接端点的文件对象 256 3.33代表控制信道的文件对象 TDI传输驱动程序例程 TDI核心模式客户交互 258 36TD请求及事件 第四章TD例程、宏和回调 4.1 TD驱动程序初始化 4.1.1注册TD传输驱动程序 4.1.2卸载和注销TD传输驱动程序 4.2 TD驱动程序调度例程 43 TDI IOC∏L请求 TD客户回调 .5TDl库函数和宏 第五章 TD操作 51打开传输地址 52打开连接端点 53打包并提交IOCL请求 27 54设置和查询信息
-VIII - 2.1.4作为呼叫管理器或者面向连接客户程序进行注册........................234 2.2 协议驱动程序数据包管理...........................................................238 2.3 协议驱动程序的动态绑定...................................................................239 2.4 协议驱动程序接收数据......................................................................240 2.4.1下边界面向无连接的中间层驱动程序接收数据............................240 2.4.1.1 在中间层驱动程序中实现ProtocolReceivePacket处理程 序 241 2.4.1.2 在协议驱动程序中实现ProtocolReceive处理程序..............242 2.4.1.3 从面向无连接协议驱动程序中访问OOB数据信息...243 2.4.2 面向连接协议驱动程序接收数据..........................................243 2.4.2.1 ProtocolCoReceivePacket处理程序实现 ..........................243 2.4.2.2 从面向连接协议驱动程序中访问OOB数据信息 ......244 2.5 发送协议驱动程序创建的数据包.................................................244 2.5.1 从面向无连接协议驱动程序发送数据包...............................244 2.5.1.1面向无连接协议驱动程序传递介质相关信息.....................245 2.5.2 面向连接协议驱动程序发送数据包......................................246 2.5.2.1面向连接协议驱动程序传递介质相关信息.........................247 2.6处理协议驱动程序的PnP事件和PM事件................................................248 2.7协议驱动程序复位操作........................................................................249 2.8协议驱动程序拆除绑定操作.................................................................249 2.9协议驱动程序状态指示........................................................................250 第三章 TDI传输器及其客户 ...................................................................252 3.1 传输驱动程序接口(TDI).........................................................252 3.2 TDI设备对象..............................................................................254 3.3 TDI文件对象..............................................................................255 3.3.1代表传输地址的文件对象...........................................................255 3.3.2代表连接端点的文件对象...........................................................256 3.3.3代表控制信道的文件对象...........................................................257 3.4 TDI传输驱动程序例程................................................................257 3.5 TDI核心模式客户交互................................................................258 3.6 TDI请求及事件 ..........................................................................259 第四章 TDI例程、宏和回调 ...................................................................260 4.1 TDI驱动程序初始化 ...................................................................260 4.1.1 注册TDI传输驱动程序.........................................................261 4.1.2 卸载和注销TDI传输驱动程序 ..............................................261 4.2 TDI驱动程序调度例程................................................................262 4.3 TDI IOCTL请求..........................................................................263 4.4 TDI 客户回调............................................................................264 4.5 TDI 库函数和宏.........................................................................266 第五章 TDI操作.....................................................................................269 5.1打开传输地址......................................................................................269 5.2打开连接端点......................................................................................270 5.3打包并提交IOCTL请求 ........................................................................271 5.4设置和查询信息...................................................................................271
5.5建立端端连接 272 56发送和接收面向连接数据 57发送和接收无连接数据 5.8面向连接和面向无连接传输 59请求传输相关操作 5.10接收错误通知 5.1|断开端端连接 .277 5.12关闭连接端点 278 5.13关闭传输地址和控制信道 278 第六章 Windows Sockets的传输助手DLLS 280 6.1 Windows Sockets Helper DLL结构… 62用 WSH DLL通信 6.3配置 WSH DLL 64 WSH DLL同步 65用 WSH DLL支持连接和断开数据 6.5.1客户应用程序和连接数据 652服务器应用程序和连接数据 6.53断连( disconnect)数据 66 WSH DLLI函数总览 第四部分面向连接的网络驱动程序接口标准(NDIS) 第一章面向连接的网络驱动程序接口标准(NDS) 1.1面向连接环境 1.2使用AFs,VCs,SAP和 Parties 1.2.1地址族 1.22虚连接 1. 2.3 SAPs 1. 2 4 Parties 1.3服务质量 14MCM和呼叫管理器有何不同 14.1初始化的不同 14.2对 NdisXxx函数调用的不同 143虚连接的不同 1.5面向连接的时间特性 1.6面向连接操作 1.6.1面向连接操作总结 16.1.1由客户执行的面向连接操作 16.1.2由呼叫管理器执行的面向连接操作 16.1.3由微端口执行的面向连接操作 89988092 1.6.2地址族和SAPs上的操作 162.1注册并打开一个地址族 292 1.62.2注册一个SAP 162.3注销SAP 1624关闭一个地址族 16.3Cs上的操作
- IX- 5.5建立端端连接......................................................................................272 5.6发送和接收面向连接数据.....................................................................273 5.7发送和接收无连接数据........................................................................275 5.8面向连接和面向无连接传输.................................................................276 5.9请求传输相关操作...............................................................................277 5.10接收错误通知 ....................................................................................277 5.11断开端端连接.....................................................................................277 5.12关闭连接端点 ....................................................................................278 5.13关闭传输地址和控制信道...................................................................278 第六章Windows Sockets的传输助手DLLS ......................................................280 6.1 Windows Sockets Helper DLL结构 ........................................................280 6.2用WSH DLL通信 .................................................................................280 6.3配置WSH DLL.....................................................................................281 6.4WSH DLL同步.....................................................................................281 6.5用WSH DLL支持连接和断开数据.........................................................282 6.5.1客户应用程序和连接数据...........................................................282 6.5.2服务器应用程序和连接数据........................................................282 6.5.3断连(disconnect)数据..............................................................283 6.6WSH DLL函数总览..............................................................................283 第四部分面向连接的网络驱动程序接口标准(NDIS).................................................285 第一章 面向连接的网络驱动程序接口标准(NDIS) ...........................................285 1.1面向连接环境......................................................................................285 1.2使用AFs,VCs,SAP和Parties..............................................................286 1.2.1地址族.......................................................................................286 1.2.2虚连接.......................................................................................286 1.2.3 SAPs.........................................................................................287 1.2.4 Parties.......................................................................................287 1.3服务质量.............................................................................................287 1.4MCM和呼叫管理器有何不同................................................................287 1.4.1初始化的不同.............................................................................288 1.4.2对NdisXxx函数调用的不同.........................................................288 1.4.3虚连接的不同.............................................................................288 1.5面向连接的时间特性............................................................................289 1.6面向连接操作......................................................................................289 1.6.1面向连接操作总结......................................................................289 1.6.1.1由客户执行的面向连接操作..............................................289 1.6.1.2由呼叫管理器执行的面向连接操作...................................290 1.6.1.3由微端口执行的面向连接操作..........................................291 1.6.2地址族和SAPs上的操作..............................................................292 1.6.2.1注册并打开一个地址族.....................................................292 1.6.2.2注册一个SAP....................................................................293 1.6.2.3注销SAP...........................................................................294 1.6.2.4关闭一个地址族...............................................................294 1.6.3 VCs上的操作.............................................................................295
1.6.3.1创建ⅤC 1.6.3.2激活ⅤC 633使VC去活 6.34删除ⅤC 1.64创建呼叫 1.64进行呼叫 1.64.2指示内入呼叫 299 1.65改变活动ⅤC的QoS 16.5.1客户发起的改变呼叫参数请求。 1.6.5.2改变呼叫参数的内入请求 1.66增加和删除 Parties. 661把一个Pay加入到多点呼叫 1.6.6.2从多点呼叫中删除 Party 1.6.6.3从多点呼叫中删除一个Paty的内入请求 1.67发送并接收数据 1.6.7.1在ⅤC上发送包 16.7.2接收VC上的包 1.68断开呼叫 1.6.8.1客户发起的关闭呼叫请求 682关闭呼叫的内入请求 1.69获取并设置信息 169.1查询或设置信息 1.6.9.2指示微端口状态 16.10重置 第五部分安装网络组件 310 第一章安装网络组件 310 1.1用于安装网络组件的组件和文件 310 1.2创建网络INF文件 21网络INFS文件名的约定 122网络INF文件的版本节 12.3网络INF文件的模型节 124INF文件的 DDInstal节 313 1.2.5删除节 315 1.2.6 Controlflags节 315 127网络INF文件的 add-registry- - sections 315 1.27.1设置静态参数 .316 1.2.7.2为WAN适配器说明WAN端点 .316 12.7.3为ISDN适配器说明ISDN键和值 316 1.274安装多协议 WAN NICS 318 1.2.7.5请求安装另一个网络组件 319 1.2.7.6说明 Net cLient组件的名字和提供者 319 1.2.7.7增加 HelpText值 319 1.27.8为通知对象增加注册值 320 1.2.7.9向Ndi键增加服务相关值 320
- X- 1.6.3.1创建VC............................................................................295 1.6.3.2激活VC............................................................................296 1.6.3.3使VC去活.........................................................................297 1.6.3.4删除VC............................................................................298 1.6.4创建呼叫....................................................................................298 1.6.4.1进行呼叫..........................................................................298 1.6.4.2指示内入呼叫...................................................................299 1.6.5改变活动VC的QoS.....................................................................301 1.6.5.1客户发起的改变呼叫参数请求。.......................................301 1.6.5.2改变呼叫参数的内入请求.................................................302 1.6.6增加和删除Parties.......................................................................302 1.6.6.1把一个Party加入到多点呼叫..............................................302 1.6.6.2从多点呼叫中删除Party.....................................................303 1.6.6.3从多点呼叫中删除一个Party的内入请求............................304 1.6.7发送并接收数据.........................................................................304 1.6.7.1在VC上发送包..................................................................304 1.6.7.2接收VC上的包..................................................................305 1.6.8断开呼叫....................................................................................306 1.6.8.1客户发起的关闭呼叫请求.................................................306 1.6.8.2关闭呼叫的内入请求........................................................307 1.6.9获取并设置信息.........................................................................307 1.6.9.1查询或设置信息...............................................................307 1.6.9.2指示微端口状态...............................................................308 1.6.10重置.........................................................................................308 第五部分 安装网络组件.........................................................................................310 第一章 安装网络组件....................................................................................310 1.1用于安装网络组件的组件和文件..........................................................310 1.2创建网络INF文件.................................................................................311 1.2.1网络INFS文件名的约定..............................................................311 1.2.2网络INF文件的版本节................................................................311 1.2.3网络INF文件的模型节................................................................312 1.2.4 INF文件的DDInstall节...............................................................313 1.2.5删除节.......................................................................................315 1.2.6 ControlFlags节...........................................................................315 1.2.7网络INF文件的add-registry-sections.............................................315 1.2.7.1设置静态参数...................................................................316 1.2.7.2 为WAN适配器说明WAN端点 ..........................................316 1.2.7.3为ISDN适配器说明ISDN键和值........................................316 1.2.7.4安装多协议WAN NICs......................................................318 1.2.7.5请求安装另一个网络组件.................................................319 1.2.7.6说明NetCLient组件的名字和提供者...................................319 1.2.7.7增加HelpText值.................................................................319 1.2.7.8为通知对象增加注册值.....................................................320 1.2.7.9向Ndi键增加服务相关值...................................................320