尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

windows网络适配器驱动开发-编写 MBBCx 客户端驱动程序(中)

windows网络适配器驱动开发-编写 MBBCx 客户端驱动程序(中)
📅 发布时间:2026/7/21 8:22:14
为 PDP 上下文/EPS 载体创建 NetAdapter 接口

在建立数据会话之前,MBBCx 将指示客户端驱动程序创建 NETADAPTER 对象,MBBCx 将使用它来表示激活的数据会话的网络接口。 这是通过 MBBCx 调用客户端驱动程序的 EvtMbbDeviceCreateAdapter 回调函数来实现的。

在 EvtMbbDeviceCreateAdapter 回调函数的实现中,MBBCx 客户端驱动程序必须首先执行与任何 NetAdapterCx 客户端驱动程序创建 NETADAPTER 对象所需的相同任务。 此外,它还必须执行以下附加任务:

  • 在 NetAdapterCreate 创建的 NETADAPTER 对象上调用 MbbAdapterInitialize。
  • 调用 MbbAdapterinitialize 后,调用 MbbAdapterGetSessionId 以检索 MBBCx 打算使用此 NETADAPTER 对象的数据会话 ID。 例如,如果返回的值为 0,则表示 MBBCx 会将此 NETADAPTER 接口用于由主 PDP 上下文/默认 EPS 持有者建立的数据会话。
  • 建议 MBBCx 客户端驱动程序在创建的 NETADAPTER 对象和返回的 SessionId 之间保留内部映射。 这有助于跟踪数据会话到 NETADAPTER 对象的关系,当激活多个 PDP 上下文/EPS 载体时尤其有用。
  • 在从 EvtMbbDeviceCreateAdapter返回之前,客户端驱动程序必须通过调用 NetAdapterStart来启动适配器。
  • 还可以通过在 调用 NetAdapterStart之前调用其中一个或多个函数来设置适配器的功能:
NetAdapterSetDatapathCapabilities NetAdapterSetLinkLayerCapabilities NetAdapterSetLinkLayerMtuSize

MBBCx 至少调用此回调函数一次,因此主 PDP 上下文/默认 EPS 载体始终有一个 NETADPATER 对象。 如果激活了多个 PDP 上下文/EPS 载体,MBBCx 可能会多次调用此回调函数,每次建立数据会话时调用一次。 NETADAPTER 对象和数据会话表示的网络接口之间必须存在一对一关系,如下图所示。

以下示例演示如何为数据会话创建 NETADAPTER 对象。 请注意,为简洁和清晰起见,设置适配器功能所需的错误处理和代码已省略。

NTSTATUS EvtMbbDeviceCreateAdapter( WDFDEVICE Device, PNETADAPTER_INIT AdapterInit ) { // Get the client driver defined per-device context PMY_DEVICE_CONTEXT deviceContext = MyGetDeviceContext(Device); // Set up the client driver defined per-adapter context WDF_OBJECT_ATTRIBUTES adapterAttributes; WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&adapterAttributes, MY_NETADAPTER_CONTEXT); // Create the NETADAPTER object NETADAPTER netAdapter; NTSTATUS status = NetAdapterCreate(AdapterInit, &adapterAttributes, &netAdapter); // Initialize the adapter for MBB status = MbbAdapterInitialize(netAdapter); // Retrieve the Session ID and use an array to store // the session <-> NETADAPTER object mapping ULONG sessionId; PMY_NETADAPTER_CONTEXT netAdapterContext = MyGetNetAdapterContext(netAdapter); netAdapterContext->NetAdapter = netAdapter; sessionId = MbbAdapterGetSessionId(netAdapter); netAdapterContext->SessionId = sessionId; deviceContext->Sessions[sessionId].NetAdapterContext = netAdapterContext; // // Optional: set adapter capabilities // ... NetAdapterSetDatapathCapabilities(netAdapter, &txCapabilities, &rxCapabilities); ... NetAdapterSetLinkLayerCapabilities(netAdapter, &linkLayerCapabilities); ... NetAdapterSetLinkLayerMtuSize(netAdapter, MY_MAX_PACKET_SIZE - ETHERNET_HEADER_LENGTH); // // Required: start the adapter // status = NetAdapterStart(netAdapter); return status; }

MBBCx 保证在使用相同会话 ID 请求 MBIM_CID_CONNECT 之前调用 EvtMbbDeviceCreateAdapter。 下列流程图显示了客户端驱动程序与类扩展在创建 NETADAPTER 对象时的交互。

当 EvtDevicePrepareHardware 成功完成时,MBBCx 将启动创建用于主 PDP 上下文/默认 EPS 承载的 NETADAPTER 对象的流程。

每当应用程序请求按需连接时, WwanSvc 就会触发用于为辅助 PDP 上下文/专用 EPS 持有者创建 NETADAPTER 对象的流。

相关新闻

  • C#与C/C++跨语言回调实战:从原理到生产级架构设计
  • TMS320F2802x ADC深度解析:采样模式、中断与校准实战
  • 在自动化脚本中如何实现播音?

最新新闻

  • C++ <numeric>库深度解析:从accumulate到并行reduce的性能演进
  • AI低代码开发:从自然语言到系统原型的革命
  • 分布式CAP原理
  • 2026IVL夏季赛W6D2成都Wolves群访:战术复盘与版本适应深度解析
  • AI模型安全审查能力终极验证:用17类对抗样本+5类提示注入+2类数据投毒完成TTP级能力压测(结果震惊NIST)
  • 2026年7月最新浪琴成都青羊大悦城维修保养服务电话 - 浪琴官方售后服务中心

日新闻

  • AI云原生实战05-金融AI上云最难的不是技术,是“不出事“——TCE银行风控架构拆解
  • 2026年GEOSEO优化公司选型深度测评:五大硬核标准严选,这六家重塑搜索增长新格局 - 品牌前沿专家
  • **核验!2026年7月卡地亚香港**售后网点地址及服务电话公告 - 卡地亚服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号