gpt4 book ai didi

linux-kernel - linux cdc_ecm 驱动程序与 rndis 驱动程序

转载 作者:行者123 更新时间:2023-12-05 08:37:34 26 4
gpt4 key购买 nike

linux cdc_ecm驱动和rndis协议(protocol)有什么关系? cdc_ecm 是否以任何方式基于微软的 rndis 规范?

来自此维基页面 https://en.wikipedia.org/wiki/RNDIS

The USB Implementers Forum (USB-IF) defines at least three non-proprietary USB communications device class (USB CDC) protocols with comparable "virtual Ethernet" functionality; one of them (CDC-ECM) predates RNDIS and is widely used for interoperability with non-Microsoft operating systems, but does not work with Windows.

cdc_ecm 似乎是基于 microsoft rndis 的。

最佳答案

CDC-ECM 是由 USB-IF 创建的标准。它与 RNDIS 完全无关。正如您的引述所说,它早于 RNDIS。这意味着它是在 RNDIS 存在之前创建的,因此它不能基于 RNDIS 除非时间机器进入画面。如果您查看协议(protocol),就会发现它明显不同。

CDC-ECM 在 Linux 主机、MacOS、ChromeOS 和某些(主要是三星)Android 手机上开箱即用。

Microsoft 决定在 USB 协议(protocol)上创建一个新的以太网,而不是使用已经存在的标准 (CDC-ECM)。微软就是这样。所以他们创建了 RNDIS,它不是标准也没有发布。它是基于 NDIS 的 hack,NDIS 是 Microsoft 的旧 DOS 和 Windows 3.11 时代网络协议(protocol)。微软也是如此。他们喜欢将东西建立在旧的 MS 软件之上,而旧的 MS 软件又基于更旧的 MS 软件,一直追溯到 DOS。这使得任何其他人都很难与之兼容。

Microsoft 在 Windows 中不包括 CDC-ECM 驱动程序,但有 RNDIS 驱动程序。

如果没有 INF 文件,仅使用供应商和产品 ID、设备类别等,就无法让 Windows 加载包含的 RNDIS 驱动程序。Microsoft 创建了一个非标准的 USB 设备标识描述符(请参阅此处的模式)必须用于向 Windows 识别 RNDIS 设备,以便它加载通用驱动程序。

Linux 有一个 CDC-ECM/RNDIS 组合小工具,可用于实现更广泛的兼容性。这显示为具有两种功能的 USB 设备。一个函数是 RNDIS,Windows 将使用它。另一个功能是 CDC-ECM,其他人都会用到它。它不是“支持 RNDIS 的 ECM”。这是两个不同的功能,一次只能使用其中一个,它们都是由同一个小工具创建的。

关于linux-kernel - linux cdc_ecm 驱动程序与 rndis 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65321405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com