没有合适的资源?快使用搜索试试~ 我知道了~
NDIS中间层驱动程序PassThru的扩展
需积分: 9 3 下载量 84 浏览量
2021-06-17
14:24:48
上传
评论
收藏 220KB DOC 举报
温馨提示


试读
17页
NDIS中间层驱动程序PassThru的扩展
资源详情
资源评论
资源推荐

NDIS- 基于
PassThru
的
NDIS
中间层驱动程序扩展
概要:开发一个 NDIS 驱动是一项相对复杂的工作,这一方面是由于核心驱动
本身有更多的限制和要求,有更多的“游戏规则”要求开发者理解和掌握, NDIS
的复杂性把难度更是提高了,本文以 PassThru 为例,加上自己的理解,讲述
了 NDIS 驱动的处理过程和在 PassThru 的基础上进行扩展的基本方法,本文
并不是一个入门读物,所以没有提及任何核心驱动开发的相关知识,本文主要
讲述的是 NDIS 中间层对数据包处理的流程。在阅读过程中,关于相关 API 的
用法,或其它信息,请参看 DDK 文档。
一 NDIS 驱动程序分类.
NDIS(Network Driver Interface Specication)是 Windows 网络驱动
程序接口标准,NDIS 驱动程序分为三类:
1. NDIS Miniport NIC Driver: 底层的微端口 NIC 驱动,这就是网络设备的物
理的驱动程序了。
2. NDIS Protocol Driver: 高层的协议驱动,用来实现某个具体的协议栈,如
TCP/IP 协议栈,并向上导出 TDI 接口。
3. NDIS Intermediate Driver: 中间层驱动,位于 Miniport Driver 和
Protocol Driver 之间。

二 NDIS 驱动结构简介.
其中,最上层是一个 NDIS Protocol Driver,它向上提供一个 Transport Driver
Interface(TDI),向下通过 NDIS 接口与下面的 NDIS 中间层的上边界交互,NDIS 中间层
的下边界通过 NDIS 接口与下层的 NDIS Miniport Driver 交互。最后,由 NDIS Miniport
Driver 利用 NDIS 接口与物理网络设备 NetCard 交互。
NetCard 是由不同的网卡设备产商提供的,而 NDIS 接口库是由 Microsoft 开发好的,为什
么 NDIS Miniport Driver 不是直接与物理网卡交互,而是通过 NDIS 接口与下物理网卡交
互呢?(我想很多人都会和我当初一样,有这个疑问)。
事实上,这是由于 Windows 系统为了提高可移植性,而设计出一个硬件抽象层(HAL),

硬件抽象层在内部处理不同的硬件之间的差异,并且暴露出一个统一的接口给核心驱动开发
者。例如:在 Intel 构架的系统中,内存和外部设备的端口采用分别编址,如果要从某个外
部设备的端口上读写数据的话,可能要通过专用指令 IN/OUT 读写,而在 Alpha 构架的系统
上,采用的是统一编址的方式,所以对外部设备的 IO 端口进行读写的话还是通过访问内存
的指令,HAL 提供一组服务支持函数,如果要访问外部设备上的端口数据可以使用
READ_PORT_UCHAR/WRITE_PORT_UCHAR 等等,核心驱动开发者不用去考虑不同硬件
构架的之间的差异。在 NDIS Miniport Driver 中,NetCard 驱动的程序,正是这样通过
NDIS 接口提供的一组类似功能的函数,与物理的网络设备进行交互。其中,最上层是一个
NDIS Protocol Driver,它向上提供一个 Transport Driver Interface(TDI),向下通过
NDIS 接口与下面的 NDIS 中间层的上边界交互,NDIS 中间层的下边界通过 NDIS 接口与下
层的 NDIS Miniport Driver 交互。最后,由 NDIS Miniport Driver 利用 NDIS 接口与物
理网络设备 NetCard 交互。

三 NDIS 驱动程序的数据处理流程
3.1 三种 NDIS 驱动程序的关系。
一个 NDIS Protocol Driver 的上边沿导出 TDI 接口,并在其下边沿向 NDIS 注册一组
Protocolxxx 操作例程;
剩余16页未读,继续阅读













stormJZJ
- 粉丝: 0
- 资源: 15
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制

评论0