windows网络适配器驱动开发-编写 MBBCx 客户端驱动程序(下)
NETADAPTER 对象的生存期在 MBB-NetAdapter 客户端驱动模型中NETADAPTER 对象的创建与销毁完全由 MBBCx 控制这与其他类型的 NetAdapterCx 客户端驱动程序存在显著差异。创建时机与方式与其他 NetAdapterCx 驱动程序在 EvtDriverDeviceAdd 回调中自行创建 NETADAPTER 对象不同MBB 客户端驱动程序不得在该回调中创建 NETADAPTER 对象。相反NETADAPTER 对象的创建由 MBBCx 在需要建立数据会话时触发。MBBCx 会调用客户端驱动程序的 EvtMbbDeviceCreateAdapter 回调函数指示其创建一个 NETADAPTER 对象。此回调至少会被调用一次用于建立主 PDP 上下文或默认 EPS 承载之后可能被多次调用每次对应一个需要建立的数据会话。在 EvtMbbDeviceCreateAdapter 回调中客户端驱动程序负责调用 NetAdapterCreate 创建对象并必须在返回前调用 NetAdapterStart 启动适配器。销毁时机与方式当数据会话被停用例如额外的 PDP 上下文或 EPS 承载被去激活后对应的 NETADAPTER 对象便不再需要。此时MBBCx 会自动销毁该 NETADAPTER 对象。客户端驱动程序绝对不得在创建的 NETADAPTER 对象上调用 WdfObjectDelete对象的销毁由框架全权管理。资源清理如果客户端驱动程序需要在 NETADAPTER 对象销毁时清理与其绑定的上下文数据如为对象分配的私有内存、打开的设备句柄等则必须在调用 NetAdapterCreate 时在对象属性WDF_OBJECT_ATTRIBUTES结构中提供 EvtDestroyCallback 回调函数。当 MBBCx 销毁 NETADAPTER 对象时框架会调用此回调让驱动程序有机会执行最后的清理工作从而避免资源泄漏。MBB 设备的电源管理MBB 设备通常通过 USB 连接到现代待机Modern Standby平台。对于电源管理MBB 客户端驱动程序应遵循与其他类型 NetAdapterCx 客户端驱动程序相同的模式即使用 NETPOWERSETTINGS 对象。具体而言驱动程序通过 NETPOWERSETTINGS 对象向电源管理框架报告其电源管理能力和唤醒功能。这包括设备支持的电源状态、从低功耗状态恢复的时间等。此外驱动程序还需处理标准的 WDF 电源管理事件回调如 EvtDeviceD0Entry 和 EvtDeviceD0Exit在设备电源状态转换时执行必要的硬件操作。需要注意的是虽然驱动程序使用通用的 WDF/NetAdapterCx 电源管理框架但 MBB 设备本身有一套特定的电源管理模式。这些模式是预配置状态、连接状态和无线电电源状态的组合。模式之间的转换通常由移动宽带类驱动程序或通过 USB 总线命令触发。不过在 MBBCx 客户端驱动程序层面电源管理主要通过标准的 WDF 和 NetAdapterCx 接口来实现。处理设备服务会话DSS设备服务会话Device Service Session, DSS是 MBBCx 提供的一种机制允许上层应用程序与调制解调器设备进行私有数据交换。DSS 数据的收发由 MBBCx 通过两个核心回调函数与客户端驱动程序交互。下行数据应用程序 → 设备当应用程序向下发送 DSS 数据到调制解调器设备时MBBCx 会调用客户端驱动程序的 EvtMbbDeviceSendServiceSessionData 回调函数。在此回调中驱动程序需要异步地将数据发送到其硬件设备。数据包含在框架传入的 WDFMEMORY 对象中。关键在于驱动程序完成数据发送后无论成功或失败必须调用 MbbDeviceSendServiceSessionDataComplete 方法。此调用会通知 MBBCx 发送操作已完成并释放之前为 DSS 数据分配的内存。如果驱动程序忘记调用此方法将导致内存泄漏。上行数据设备 → 应用程序当调制解调器有数据需要传递给应用程序时客户端驱动程序应调用 MbbDeviceReceiveDeviceServiceSessionData 方法。驱动程序需自行分配一个 WDFMEMORY 对象来存放从设备接收到的数据然后调用此方法将数据和对应的会话 IDSessionId传递给 MBBCx。MBBCx 随后会将这些数据路由到发起请求的应用程序。在调用 MbbDeviceReceiveDeviceServiceSessionData 后驱动程序通常可以调用 WdfObjectDelete 来释放其分配的 WDFMEMORY 对象。总结综上所述MBB-NetAdapter 客户端驱动程序在 NETADAPTER 对象管理上遵循“MBBCx 控制生命周期客户端驱动负责实现创建与清理”的原则在电源管理上复用标准的 NetAdapterCx 机制在设备服务会话处理上则通过明确的异步回调与内存管理约定实现了应用程序与调制解调器设备之间的私有数据通道。理解这些机制是编写稳定、高效的 MBB 客户端驱动程序的基础。

相关新闻

【autonomous】AI 国际象棋智能体对局系统案例讲解(附完整源码)

【autonomous】AI 国际象棋智能体对局系统案例讲解(附完整源码)

目录 1. 案例目标 2. 技术栈与核心依赖 依赖安装 3. 项目配置 3.1 OpenAI API 密钥配置 3.2 游戏参数配置 4. 项目结构 5. 核心代码实现 5.1 会话状态管理 5.2 核心功能函数 available_moves() - 获取合法移动 execute_move(move) - 执行移动 5.3 智能体配置 白方…

2026/7/21 8:17:28 阅读更多 →
3步掌握SillyTavern:从零开始的AI对话界面终极指南

3步掌握SillyTavern:从零开始的AI对话界面终极指南

3步掌握SillyTavern:从零开始的AI对话界面终极指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 还在为复杂的AI对话界面而烦恼吗?SillyTavern作为专为高级用户设…

2026/7/21 8:17:28 阅读更多 →
Python agc-key 包完全指南:功能、安装、语法与实战案例

Python agc-key 包完全指南:功能、安装、语法与实战案例

1. 引言agc-key 是一个专为华为 AppGallery Connect(AGC)服务设计的 Python 工具包,主要用于简化 AGC 密钥(Key)的管理与操作。通过 agc-key,开发者可以更高效地完成密钥生成、验证、轮换等任务&#xff0c…

2026/7/21 8:17:28 阅读更多 →

最新新闻

零基础3步打造专业MDX词典:AutoMdxBuilder完全指南

零基础3步打造专业MDX词典:AutoMdxBuilder完全指南

零基础3步打造专业MDX词典:AutoMdxBuilder完全指南 【免费下载链接】AutoMdxBuilder Automatically make mdx dictionaries 项目地址: https://gitcode.com/gh_mirrors/au/AutoMdxBuilder 还在为制作专业电子词典而烦恼吗?AutoMdxBuilder让复杂的…

2026/7/21 16:50:29 阅读更多 →
劳动板块完整避坑指南,一次性规避所有扣分点

劳动板块完整避坑指南,一次性规避所有扣分点

综评劳动板块看似简单,实则扣分点密集,绝大多数学生的劳动评级无法拿优,都是因为踩中各类隐形扣分误区。劳动教育审核不仅看参与次数,更看重维度齐全、时序连贯、内容真实、原创优质,任何一处细节失误都会导致评级降级…

2026/7/21 16:50:29 阅读更多 →
农耕劳动是优质刚需,补齐生产劳动核心短板

农耕劳动是优质刚需,补齐生产劳动核心短板

农耕劳动是中小学劳动教育大纲明确要求的刚需实践,属于生产劳动核心类目,官方认可度高、综评分值高,是完善劳动板块维度的必备项目。当下多数学生长期生活在城市,缺少农耕体验,劳动档案普遍缺失农耕素材,导…

2026/7/21 16:50:29 阅读更多 →
校园劳动常态化,填补学期空白杜绝档案断层

校园劳动常态化,填补学期空白杜绝档案断层

很多学生的劳动档案存在明显的学期空白,寒暑假素材充足、在校期间毫无积累,时序断裂、结构失衡,是综评扣分的常见问题。寒暑假学生大多集中突击校外劳动,忽视校内常态化劳动积累,导致学期劳动记录断层,档案…

2026/7/21 16:50:29 阅读更多 →
科创劳动性价比极高,轻松拉开劳动板块差距

科创劳动性价比极高,轻松拉开劳动板块差距

在众多劳动实践项目中,科创劳动是最稀缺、最容易拉开综评分差的高阶项目,属于生产劳动中的高分细分维度。绝大多数学生的劳动素材集中在家务、清扫、种植等常规项目,内容同质化严重,而科创劳动参与人数少、原创度高、含金量足&…

2026/7/21 16:50:29 阅读更多 →
SAP CU65 OD与FUNCTION应用小例

SAP CU65 OD与FUNCTION应用小例

上文我们介绍了VC中值与函数的应用,本文介绍另一个常用的场景,OD语句中的FUNCTION语句与函数的应用。一般步骤:①业务顾问确认好函数逻辑,确认函数的入参和出参,提供FS;②开发顾问根据逻辑FS创建函数&#…

2026/7/21 16:49:29 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻