USB网络控制通讯NCM
+ -

NCM 通知顺序

2025-07-08 0 0

通知序列

NCM功能需要以特定顺序发送ConnectionSpeedChange和NetworkConnection通知。为了简化主机设备驱动程序的编码,将要发送wValue == 0001h的NetworkConnection通知的功能必须首先发送ConnectionSpeedChange通知,该通知指示新连接生效时将生效的连接速度。

111050666169

序列要求

正确的通知顺序

  1. ConnectionSpeedChange通知 - 报告连接速度
  2. NetworkConnection通知 - 报告连接状态 (wValue == 0001h)

错误顺序示例

  1. NetworkConnection通知 - 报告连接状态
  2. ConnectionSpeedChange通知 - 报告连接速度 ❌

序列合理性

问题分析

如果ConnectionSpeedChange通知跟随NetworkConnection通知,则主机驱动程序在收到ConnectionSpeedChange之前无法以正确速度发出网络连接信号。这种延迟可能:

  • 在总线事件和系统事件之间引入延迟
  • 由于速度的虚假变化导致主机系统开销

解决方案

如果功能首先发出连接速度信号,则主机驱动程序将在网络连接变为有效时知道信令速度。

开发者注意事项

重要差异

  • 此通知序列(速度在连接之前)与[USBECM12]中指定的序列不同
  • 开发者应意识到这种差异
  • NCM和ECM的通知序列要求不同

实现建议

正确的实现流程

// 1. 首先发送速度变化通知
SendConnectionSpeedChangeNotification(newSpeed);

// 2. 然后发送连接状态通知
SendNetworkConnectionNotification(1); // wValue == 0001h

避免的问题

  • 延迟通知
  • 系统开销
  • 不正确的速度信息
  • 驱动程序复杂性

总结

  • NCM要求特定的通知序列
  • 速度通知必须在连接通知之前
  • 与ECM规范存在差异
  • 简化主机驱动程序编码
  • 减少系统延迟和开销

0 篇笔记 写笔记

关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB网络控制通讯NCM
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!