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/22 15:57:35 阅读更多 →
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/22 15:57:39 阅读更多 →
Python agc-key 包完全指南:功能、安装、语法与实战案例

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

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

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

最新新闻

TM4C123 GPIO保护机制与寄存器配置详解:从锁存提交到功能复用

TM4C123 GPIO保护机制与寄存器配置详解:从锁存提交到功能复用

1. 项目概述与核心价值 在嵌入式开发的日常工作中,我们常常会听到“把某个引脚配置成GPIO输出,然后拉高”这样的简单指令。对于初学者或者使用高级HAL库的开发者来说,这背后可能只是一行函数调用。但当你真正深入到寄存器级别,尤其…

2026/7/23 16:04:38 阅读更多 →
2026年AI学术写作工具实测与深度评测

2026年AI学术写作工具实测与深度评测

1. 2026年AI论文写作工具实测全景报告作为一名在学术圈摸爬滚打十年的科研老狗,我完整经历了从Word手打到AI辅助的写作进化史。2026年的学术工具市场已经彻底重新洗牌,那些只会改语法的初级工具早就被淘汰出局。这次我自掏腰包测试了市面上23款标榜"…

2026/7/23 16:04:38 阅读更多 →
Rust async/await 与 Go goroutine:并发范式深度对比与选型复盘

Rust async/await 与 Go goroutine:并发范式深度对比与选型复盘

Rust async/await 与 Go goroutine:并发范式深度对比与选型复盘 一、两个"轻量级并发"的虚假等价:Rust 和 Go 真的差不多吗 在 Rust async/await 和 Go goroutine 之间做选型讨论时,"两者都很轻量"是一个常见但误导性的说…

2026/7/23 16:04:38 阅读更多 →
YOLOv11在农作物智能识别中的应用与优化

YOLOv11在农作物智能识别中的应用与优化

1. 项目概述:基于YOLOv11的农作物智能识别系统 这个项目构建了一个完整的农作物识别检测系统,核心是采用最新的YOLOv11目标检测算法,结合PyQt5开发的图形界面,实现对11类常见农作物的自动识别。系统使用的CWC数据集包含蓝草、藜、…

2026/7/23 16:04:38 阅读更多 →
03Xshell常用插件的安装及SSH免密登录的配置

03Xshell常用插件的安装及SSH免密登录的配置

本节承接上一章 JDK 与阿里云源配置。主要完成两大内容:四款高频实用工具插件安装,以及大数据集群必备的SSH 免密登录配置。常用插件能大幅提升终端操作效率、降低排错门槛;SSH 免密登录则解决了集群节点间频繁跳转反复输密码的问题&#xff…

2026/7/23 16:04:38 阅读更多 →
恶意内容注入防护:从技术原理到应急响应的全链路安全实践

恶意内容注入防护:从技术原理到应急响应的全链路安全实践

1. 这篇文章真正要解决的问题 最近在技术社区和社交媒体上,一个看似恶搞的事件引发了广泛讨论——"网友恶搞引发热议,谁干的?💀"。表面上看这只是一个网络热点事件,但背后反映的却是当前互联网环境下技术安全…

2026/7/23 16:03:38 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/22 12:54:44 阅读更多 →

月新闻