发布时间:2026/9/7 17:54:43
windows网络适配器驱动开发-网环元素管理 网环元素管理按照本主题中的指南在网络数据传输期间管理NET_RING结构及其元素。本主题中的规则描述了在不同的数据路径方案下客户端驱动程序可以修改哪些 net ring 元素的成员以及何时可以修改并提供了客户端驱动程序在使用这些结构时应牢记的一般信息。重要客户端驱动程序应在开发的所有阶段遵循这些方向。如果在使用驱动程序验证程序进行测试时客户端驱动程序不遵循这些指示驱动程序验证程序会报告冲突并在测试的设备上触发 bug 检查。NET_RING启动NET_RING的父数据包队列时环中的所有索引将初始化为 0。下表描述了客户端驱动程序可以修改的 net ring 成员字段允许修改客户端驱动程序OSReserved1否ElementStride否NumberOfElements否ElementIndexMask否EndIndex否OSReserved0否OSReserved2否BeginIndex是必需NextIndex是可选 注意框架永远不会读取NextIndex。Scratch是可选 注意框架永远不会读取Scratch。Buffer否客户端驱动程序不得修改此结构中的任何只读成员在调用EvtPacketQueueAdvance时也绝不应将BeginIndex增加到超过EndIndex。有关 net 环中的索引所有权的详细信息请参阅net 环简介。NET_PACKETNET_PACKET中的字段对数据路径运行的不同上下文敏感。是否设置数据包的Ignore字段以及驱动程序是在接收Rx还是传输Tx数据包会影响应用于该数据包的规则集。下表为每种场景中的驱动程序提供指引Rx 或 TxIgnore字段被设置由…注释Rx客户端驱动程序在 Rx 期间客户端驱动程序会根据需要设置Ignore框架会读取它。客户端驱动程序无需在 Rx 期间随时读取Ignore。如果客户端驱动程序在 Rx 期间设置Ignore字段则• 取消未成功编程到硬件的任何数据包的 Rx 操作时客户端驱动程序必须写入Ignore字段。有关更多信息请参阅使用网环取消网络数据。• 客户端驱动程序不得将资源与数据包相关联因为它们不会被释放。如果客户端驱动程序在 Rx 期间未设置Ignore字段则• 客户端驱动程序必须填充FragmentIndex、FragmentCount和Layout中的所有字段。•FragmentIndex必须介于片段环中的BeginIndex包含和EndIndex不包含之间。•FragmentCount不能超过片段环中BeginIndex包含和EndIndex不包含之间的片段数量。如果客户端驱动程序移动相应的片段环BeginIndex• 客户端驱动程序必须移动数据包环BeginIndex。• 调用EvtPacketQueueAdvance后如果客户端驱动程序递增数据包环BeginIndex则驱动程序还必须将片段环BeginIndex递增以越过该数据包的片段。换句话说片段环BeginIndex应移动到上一数据包片段的EndIndex。TxNetAdapterCx在 Tx 期间• 客户端驱动程序不得修改除Scratch以外的任何数据包中的任何字段。• 客户端驱动程序可以读取Ignore的值但绝不能写入它。• 如果忽略 Tx 数据包驱动程序不得读取任何字段除非有必要读取Scratch。关于Ignore字段的简要回顾在 NetAdapterCx 数据路径中Ignore字段用于标记应被跳过的数据包Tx传输场景Ignore由 NetAdapterCx 框架设置用于指示驱动程序应跳过该数据包的传输例如数据包已被上层取消。驱动程序仅可读取此字段。Rx接收场景Ignore由客户端驱动程序在取消操作期间设置用于指示框架应忽略该数据包例如该数据包从未真正被硬件填充。驱动程序负责写入此字段框架负责读取并执行相应操作。NET_PACKET 布局Layout字段在 Rx 操作期间NET_PACKET的Layout字段受以下规则的约束规则编号约束条件1除Reserved0之外的所有字段都必须由客户端驱动程序初始化。2如果Layer2Type设置为NetPacketLayer2TypeEthernet则Layer2HeaderLength必须为14 或更高。3如果Layer2Type设置为NetPacketLayer2TypeNull则必须将Layer2HeaderLength设置为0。4如果Layer3Type是 IPv4 类型则Layer3HeaderLength必须为20 或更高。5如果Layer3Type是 IPv6 类型则Layer3HeaderLength必须为40 或更高。6如果Layer4Type设置为Tcp则Layer4HeaderLength必须为40 或更高。7如果Layer4Type设置为Udp则Layer4HeaderLength必须为8 或更高。8层类型字段必须位于适当的枚举范围内。注意Tx 期间不使用Layout字段。NET_FRAGMENTNET_FRAGMENT字段规则取决于驱动程序是接收还是传输以及片段缓冲区是由驱动程序还是框架附加到数据包Rx 或 Tx注释Rx• 客户端驱动程序无法写入OsReserved_Bounced字段。•如果驱动程序未附加缓冲区Capacity不得修改而ValidLength和Offset必须修改。•如果驱动程序正在附加缓冲区Capacity、ValidLength和Offset都必须修改。•Offset ValidLength必须小于Capacity。Tx• 客户端驱动程序不能修改除Scratch以外的任何字段。关键规则速查表操作场景BeginIndexNextIndexScratchIgnore读Ignore写Layout 字段片段字段Tx - 正常只读可写可写可读❌ 禁止不使用只读除 ScratchTx - 取消可写可写可写可读❌ 禁止不使用只读除 ScratchRx - 正常可写只读可写不读取不写入必须初始化可写见上表Rx - 取消可写只读可写不读取必须写入无需初始化可写

相关新闻

2026/9/5 7:15:34

社区贡献指南:如何参与AMD MiniMax-M2.1-MXFP4项目开发

社区贡献指南:如何参与AMD MiniMax-M2.1-MXFP4项目开发 【免费下载链接】MiniMax-M2.1-MXFP4 项目地址: https://ai.gitcode.com/hf_mirrors/amd/MiniMax-M2.1-MXFP4 AMD MiniMax-M2.1-MXFP4是一个基于AMD硬件优化的高性能大语言模型项目,专为AM…

2026/9/7 17:50:31

单片机毕设选题推荐:基于 STM32 或 51 单片机的 DHT11 与 MQ-2 空气质量监测装置设计 基于 STM32 或 51 单片机的室内粉尘、温湿度、烟雾综合监测系统(024506)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/7 17:50:31

单片机毕设选题推荐:基于 STM32/51 单片机的光敏采集与光照补光智能控制系统 基于 STM32/51 单片机的多路继电器环境执行驱动与蓝牙终端(024406)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/7 17:50:31

【计算机毕业设计单片机案例】基于 STM32 或 51 单片机的双工作模式垃圾桶检测系统设计 基于 STM32 或 51 单片机的状态可视化智能垃圾桶设计与实现(025006)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/7 17:45:30

GPT-5.6时代的多智能体工作流:工具调用与架构选型实战

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

2026/9/7 0:47:43

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/7 0:14:19

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/7 0:14:17

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/7 0:03:36

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

2026/9/7 0:03:36

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

2026/9/7 0:03:36

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/6 19:33:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/6 10:19:40

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…