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/10/13 12:50:41 阅读更多 →
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/10/13 10:01:15 阅读更多 →
Python agc-key 包完全指南:功能、安装、语法与实战案例

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

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

2026/10/2 4:54:05 阅读更多 →

最新新闻

A*算法在路径规划中的原理与实践优化

A*算法在路径规划中的原理与实践优化

1. 路径规划中的A*算法初探第一次接触A算法是在开发仓库机器人导航系统时。当时我们尝试了Dijkstra、深度优先搜索等各种路径规划方法,要么计算时间太长,要么找到的路径不够优化。直到一位同事推荐了A算法,测试效果令人惊艳——在100x100的网…

2026/10/14 2:22:24 阅读更多 →
ViTPose 仓库 DeepFashion 服装关键点检测实战:DeepPose + ResNet 回归模型配置与评估指南

ViTPose 仓库 DeepFashion 服装关键点检测实战:DeepPose + ResNet 回归模型配置与评估指南

人工智能计算机视觉深度学习 【免费下载链接】ViTPose The official repo for [NeurIPS22] "ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation" and [TPAMI23] "ViTPose: Vision Transformer for Generic Body Pose Estimation" 项…

2026/10/14 2:22:24 阅读更多 →
SimpMusic 的 Android 构建逻辑:用 Convention Plugins 与 Version Catalog 打造可扩展的 Gradle 构建体系

SimpMusic 的 Android 构建逻辑:用 Convention Plugins 与 Version Catalog 打造可扩展的 Gradle 构建体系

音视频 【免费下载链接】SimpMusic A cross-platform music app using YouTube Music for backend 项目地址: https://gitcode.com/gh_mirrors/si/SimpMusic 点击查看 免费下载 导读 本文围绕 SimpMusic 仓库中的构建配置实践,系统讲解如何用 Gradle C…

2026/10/14 2:22:24 阅读更多 →
从慢查询到Elasticsearch:倒排索引与分布式搜索入门避坑

从慢查询到Elasticsearch:倒排索引与分布式搜索入门避坑

第一次认真接触 Elasticsearch,不是赶新技术,而是被一条慢查询逼的。当时我在维护一个订单检索模块,数据量涨到六百多万条以后,按商品名称做模糊搜索的接口开始频繁超时。改 SQL、加索引、换缓存,折腾了一圈&#xff0…

2026/10/14 2:22:24 阅读更多 →
LVS+Keepalived+Nginx Docker负载均衡集群实战

LVS+Keepalived+Nginx Docker负载均衡集群实战

1. 项目概述:为什么一个负载均衡集群要绕这么大一圈?“基于Docker搭建lvskeepalivednginx实现高性能负载均衡集群”——这个标题里藏着三层技术栈的叠加,不是炫技,而是现实业务中反复踩坑后沉淀下来的务实选择。我最早在某高校实验…

2026/10/14 2:22:24 阅读更多 →
风电水电联合调度优化算法与工程实践

风电水电联合调度优化算法与工程实践

1. 项目背景与核心价值去年参与某省级电网清洁能源消纳项目时,我第一次接触到风-水联合调度这个课题。当时面对风电出力的强随机性和水电调节的滞后性,团队在制定优化运行方案时遇到了不少挑战。这个经历让我深刻认识到:在双碳目标下&#xf…

2026/10/14 2:21:24 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →