微型端口驱动程序

NDIS 微型端口驱动程序具有两个基本功能:

  • 管理网络接口卡 (NIC),包括通过 NIC 发送和接收数据。

  • 与高级驱动程序(例如筛选器驱动程序、中间驱动程序和协议驱动程序)连接。

微型端口驱动程序通过 NDIS 库与其 NIC 和高级驱动程序通信。 NDIS 库会导出一组完整的函数(NdisMXxx 和其他 NdisXxx 函数),用于封装微型端口驱动程序必须调用的所有操作系统函数。 微型端口驱动程序反过来必须导出一组入口点(MiniportXxx 函数),NDIS 会出于自己的目的或代表高级驱动程序来调用这些入口点,以便访问微型端口驱动程序。

注意

有关 NDIS 驱动程序堆栈的详细信息,以及显示所有 NDIS 驱动程序类型之间的关系的图表,请参阅 NDIS 驱动程序堆栈

以下发送和接收操作演示了微型端口驱动程序与 NDIS 和高级驱动程序的交互:

  • 当传输驱动程序具有要传输的数据包时,它会调用 NDIS 库导出的 NdisXxx 函数。 然后,NDIS 会调用微型端口驱动程序导出的相应 MiniportXxx 函数,将数据包传递到微型端口驱动程序。 然后,微型端口驱动程序会调用相应的 NdisXxx 函数,将数据包转发到 NIC 进行传输。

  • 当 NIC 收到寻址到其自身的数据包时,它可以发布由 NDIS 或 NIC 的微型端口驱动程序处理的硬件中断。 NDIS 会调用相应的 MiniportXxx 函数来通知 NIC 的微型端口驱动程序。 微型端口驱动程序设置从 NIC 传输数据,然后调用相应的 NdisXxx 函数,指示向绑定的高级驱动程序指示存在收到的数据包。

无连接和面向连接的微型端口驱动程序

NDIS 支持无连接环境和面向连接的环境的微型端口驱动程序。

无连接微型端口驱动程序控制无连接网络媒体(如以太网)的 NIC。 无连接微型端口驱动程序可进一步分为反序列化和序列化驱动程序:

注意 将反序列化所有 NDIS 6.0 和更高版本的驱动程序。

  • 反序列化驱动程序会序列化其自己的 MiniportXxx 函数的操作,并在内部将所有传入的发送数据包排队。 这可显著提高全双工性能,前提是驱动程序的关键部分(一次只运行一个线程的代码)保持较小。

  • 序列化驱动程序依赖于 NDIS 来序列化对其 MiniportXxx 函数的调用并管理其发送队列。

面向连接的微型端口驱动程序控制面向连接的网络媒体(如 ISDN)的 NIC。 面向连接的微型端口驱动程序始终反序列化 -- 它们始终序列化其自己的 MiniportXxx 函数的操作,并在内部对所有传入的发送数据包进行排队。

NDIS 微型端口驱动程序可以具有非 NDIS 下边缘(请参阅下图)。

此图表显示具有非 NDIS 下边缘的 NDIS 微型端口驱动程序。

通过非 NDIS 下边缘,微型端口驱动程序使用总线的类接口(例如通用串行总线 (USB))来控制总线上的设备。 微型端口驱动程序通过向总线发送 I/O 请求数据包 (IRP) 或直接发送到连接到总线的远程设备来与设备通信。 在上边缘,微型端口驱动程序公开标准 NDIS 微型端口驱动程序接口,使微型端口驱动程序能够与上层 NDIS 驱动程序通信。

NDIS 微型端口驱动程序

NDIS 微型端口驱动程序参考