网络接口卡支持

本主题介绍了NDIS微型端口驱动程序可以管理的各种网络接口卡(NIC)类型,以及不同类型的NIC如何影响驱动程序传输网络数据的方式。

向 NDIS 报告 NIC 的中等类型

若要报告 NIC 的中等类型,微型端口驱动程序将指针传递给 NdisMSetMiniportAttributes 函数的 MiniportAttributes 参数中的NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES结构。 微型端口驱动程序在初始化期间从其 MiniportInitializeEx 函数调用 NdisMSetMiniportAttributes。 微型端口驱动程序应在设置NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES结构中的注册属性之后以及设置任何其他属性之前设置 MiniportAttributes 属性。 设置 MiniportAttributes 属性是必需的。 驱动程序在设置 MiniportAttributes 属性时,将NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES结构的 MediaType 成员设置为适当的媒体类型。

当上层的 NDIS 协议驱动程序调用 NdisOpenAdapterEx 以绑定到指定的微型端口适配器时,它提供了一份可操作的介质类型列表。 NDIS 使用微型端口驱动程序和协议驱动程序中的信息来设置绑定。 此绑定提供用于在驱动程序堆栈上下传输网络数据的路径。

Physical NICs

微型端口驱动程序完成以初始化微型端口适配器和发送和接收网络数据的步骤可以取决于物理设备的功能,如下所示。

  • NDIS-WDM NICs

    使用 NDIS-WDM NIC(如基于 USB 的 NIC),微型端口驱动程序使用 DMA 管理内存的方式对 NDIS 无关,并且对它不可见。

  • 总线主控 DMA 网络接口卡

    这些 NIC 可以通过板载 DMA 控制器直接访问主机内存,该控制器无需使用主机 CPU 即可管理网络与主机内存之间的数据传输。

    若要发送,微型端口驱动程序设置 NIC 以映射传出缓冲区。 然后,微型端口驱动程序指示设备开始从此内存传输。 NIC DMA 控制器将数据从共享系统内存传输到网络,并在发送完成后中断 CPU。 若要接收,DMA 控制器会在通知主机中断之前将传入数据传输到主机内存。

    总线主控DMA NIC通常具有一个板载环形缓冲区,微型端口驱动程序将其映射到系统内存中的一组缓冲区。 通常,可以编程 NIC 以有效地处理多个数据包。 管理此类 NIC 的微型端口驱动程序通常支持多包发送和接收,因为 NIC 可以有效地处理多个数据包,从而提高其 I/O 吞吐量。

  • 非总线主控DMA网卡

    目前,非busmaster DMA NIC 包括以下内容:

    • 系统 DMA 网络接口卡

      管理此类 NIC 的微型端口驱动程序使用系统 DMA 控制器来管理传入和传出网络的数据包数据传输。 数据传输需要主机 CPU 的合作。

虚拟 NIC 和微型端口

在虚拟机中,NDIS 微型端口驱动程序可以将仅限软件的资源作为虚拟微型端口进行管理,也可以管理表示硬件资源的虚拟 NIC。 下表说明了虚拟微型端口和虚拟 NIC 之间的差异。

Attribute Virtual miniport Virtual NIC
Definition 映射到软件枚举的 PnP 设备的 NDIS 微型端口驱动程序。 由主机 OS 虚拟机监控程序管理的 NIC。 虚拟机监控程序使虚拟机认为它具有一些硬件,但物理环境中实际上不存在此类硬件。
Has interrupts No Yes
可以使用 DMA No Yes
由... 创建或毁灭... 客户端操作系统 宿主机操作系统
可以连接到来宾 VM 外部 No Yes