| 第一章 绪论 | 第1-8页 |
| ·引言 | 第6-7页 |
| ·本文内容安排 | 第7-8页 |
| 第二章 PPPoE协议 | 第8-19页 |
| ·什么是PPPoE? | 第8页 |
| ·为什么使用PPPoE? | 第8页 |
| ·PPPoE需要什么网络接口? | 第8-9页 |
| ·PPPoE怎么获得IP地址? | 第9页 |
| ·PPPoE协议出现的背景 | 第9页 |
| ·PPPoE协议简介 | 第9-19页 |
| ·PPPoE的发现阶段 | 第11-18页 |
| ·PPPoE的会话阶段 | 第18-19页 |
| 第三章 NDIS中间层驱动程序 | 第19-50页 |
| ·NDIS中间层驱动程序(NDIS Intermediate Drivers)概述 | 第19-21页 |
| ·NDIS中间层驱动程序的用途 | 第21页 |
| ·NDIS中间层驱动程序的开发环境 | 第21-22页 |
| ·NDIS中间层驱动程序的开发 | 第22-31页 |
| ·可分页和可丢弃代码 | 第22页 |
| ·共享资源的访问 | 第22-23页 |
| ·中间层驱动程序的DriverEntry函数 | 第23-24页 |
| ·注册NDIS中间层驱动程序 | 第24-31页 |
| ·注册中间层驱动程序的Miniport驱动 | 第24-28页 |
| ·注册中间层驱动程序的协议驱动 | 第28页 |
| ·注册下边界面向无连接的中间层驱动程序的ProtocolXxx函数 | 第28-31页 |
| ·中间层驱动程序查询和设置操作 | 第31-33页 |
| ·发布设置和查询请求 | 第31-33页 |
| ·响应设置和查询请求 | 第33页 |
| ·中间层驱动程序数据包管理 | 第33-37页 |
| ·重用数据包 | 第36-37页 |
| ·中间层驱动程序的限制 | 第37页 |
| ·中间层驱动程序接收数据 | 第37-44页 |
| ·下边界面向无连接的中间层驱动程序接收数据 | 第38-42页 |
| ·在中间层驱动程序中实现ProtocolReceivePaeket处理程序 | 第39-40页 |
| ·在中间层驱动程序中实现ProtocolReceive处理程序 | 第40-41页 |
| ·下边界面向无连接中间层驱动程序接收OOB数据信息 | 第41-42页 |
| ·下边界面向连接的中间层驱动程序接收数据 | 第42-44页 |
| ·在中间层驱动程序中实现ProtocolCoReceivePacket处理程序 | 第42-43页 |
| ·在下边界面向连接的中间层驱动程序中接收OOB数据信息 | 第43-44页 |
| ·向高层驱动程序指示接收数据包 | 第44页 |
| ·通过中间层驱动程序传输数据包 | 第44-48页 |
| ·传递介质相关信息 | 第47-48页 |
| ·处理中间层驱动程序的PnP事件和PM事件 | 第48-50页 |
| 第四章 设计与实现 | 第50-64页 |
| ·PPPoE层次划分 | 第50页 |
| ·如何使虚拟的适配器支持拨号? | 第50-51页 |
| ·模块划分 | 第51-56页 |
| ·Miniport模块 | 第51-54页 |
| ·Protocol处理模块 | 第54-55页 |
| ·PPPoE处理模块 | 第55-56页 |
| ·中间层驱动程序的动态绑定 | 第56-61页 |
| ·绑定流程: | 第56-58页 |
| ·打开中间层驱动程序下层的适配器 | 第58-60页 |
| ·微端口(Miniport)初始化 | 第60-61页 |
| ·解除绑定: | 第61页 |
| ·数据包处理流程 | 第61-64页 |
| ·数据包发送过程: | 第61-62页 |
| ·数据包接收过程 | 第62-64页 |
| 小结 | 第64-65页 |
| 参考文献 | 第65-66页 |
| 致谢 | 第66页 |