windows网络适配器驱动开发-传输和接收队列(上)
NetAdapterCx 驱动程序中的传输和接收队列允许客户端驱动程序在软件中为硬件功能如硬件传输和接收队列建模。 本文介绍如何实现和管理这些队列以优化 NetAdapterCx 中的数据路径性能。当您的客户端驱动程序调用 NET_ADAPTER_DATAPATH_CALLBACKS_INIT通常是从其 EVT_WDF_DRIVER_DEVICE_ADD 事件回调函数时它提供两个队列创建回调函数EVT_NET_ADAPTER_CREATE_TXQUEUE 和 EVT_NET_ADAPTER_CREATE_RXQUEUE。 客户端分别在这些回调中创建传输和接收队列。在转换为低功率状态之前框架会清空队列并在删除适配器之前将其删除。创建数据包队列创建数据包队列传输队列或接收队列时客户端必须提供指向以下三个回调函数的指针EVT_PACKET_QUEUE_ADVANCEEVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLEDEVT_PACKET_QUEUE_CANCELEVT_PACKET_QUEUE_ADVANCE EvtPacketQueueAdvance; void EvtPacketQueueAdvance( [_In_] NETPACKETQUEUE PacketQueue ) {...} /* 在 EVT_NET_ADAPTER_CREATE_TXRXQUEUE 回调中注册此回调函数。 使用 NET_PACKET_QUEUE_CONFIG_INIT初始化结构时设置 NET_PACKET_QUEUE_CONFIG 结构的相应成员然后调用 NetTxRxQueueCreate。 NetAdapterCx 将此回调函数与数据包队列的 EVT_PACKET_QUEUE_CANCEL 和 EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED 回调函数序列化。 */ EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED EvtPacketQueueSetNotificationEnabled; void EvtPacketQueueSetNotificationEnabled( [_In_] NETPACKETQUEUE PacketQueue, [_In_] BOOLEAN NotificationEnabled ) {...} /* 在 EVT_NET_ADAPTER_CREATE_TXRXQUEUE 回调中注册此回调函数。 使用 NET_PACKET_QUEUE_CONFIG_INIT初始化结构时设置 NET_PACKET_QUEUE_CONFIG 结构的相应成员然后调用 NetTxRxQueueCreate。 NetAdapterCx 序列化此回调函数以及数据包队列的 EVT_PACKET_QUEUE_CANCEL 和 EVT_PACKET_QUEUE_ADVANCE 回调函数。 */ EVT_PACKET_QUEUE_CANCEL EvtPacketQueueCancel; void EvtPacketQueueCancel( [_In_] NETPACKETQUEUE PacketQueue ) {...} /* 在 EVT_NET_ADAPTER_CREATE_TXRXQUEUE 回调中注册此回调函数。 使用 NET_PACKET_QUEUE_CONFIG_INIT初始化结构时设置 NET_PACKET_QUEUE_CONFIG 结构的相应成员然后调用 NetTxRxQueueCreate。 NetAdapterCx 序列化此回调函数以及数据包队列的 EVT_PACKET_QUEUE_ADVANCE 和 EVT_PACKET_QUEUE_ADVANCE 回调函数。 */此外客户端可以在初始化队列配置结构后提供这些可选的回调函数EVT_PACKET_QUEUE_START:这是一个可选的回调。 在 EVT_NET_ADAPTER_CREATE_TXRXQUEUE 回调中注册此回调函数。 使用 NET_PACKET_QUEUE_CONFIG_INIT初始化结构后设置 NET_PACKET_QUEUE_CONFIG 结构的相应成员然后调用 NetTxRxQueueCreate。在此回调中客户端驱动程序通常会配置其硬件对数据包传输或接收所需的信息。 由于此回调不返回值因此不应失败因此客户端驱动程序应在创建队列期间执行资源分配等作。 因此此回调应该是快速执行的轻型函数。客户端驱动程序在 EvtPacketQueueStart 返回后才会收到对 EVT_PACKET_QUEUE_ADVANCE、EVT_PACKET_QUEUE_CANCEL或 EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED 的调用。 此外EvtPacketQueueStart 在与 EvtPacketQueueAdvance、EvtPacketQueueCancel、EvtPacketQueueSetNotificationEnabled相同的执行上下文或线程中调用因此客户端驱动程序无需在单个队列实例的这些回调函数之间进行同步。队列启动时NetAdapterCx 保证为所有队列的环形缓冲区 BeginIndex NextIndex 0。 开始后框架不会读取或写入 数据包环缓冲区的 NextIndex因此客户端驱动程序可以根据需要使用它或选择根本不使用它。 BeginIndex 由框架读取但不会在 EvtPacketQueueStart之外修改。EVT_PACKET_QUEUE_STOP:这是一个可选的回调。 在 EVT_NET_ADAPTER_CREATE_TXrxQueueContextQUEUE 回调中注册此回调函数。 使用 NET_PACKET_QUEUE_CONFIG_INIT初始化结构后设置 NET_PACKET_QUEUE_CONFIG 结构的相应成员然后调用 NetTxrxQueueContextQueueCreate。此回调不返回值因此不应失败因此此回调应该是快速执行的轻型函数。EvtPacketQueueStop 返回后客户端驱动程序将不会收到对 EVT_PACKET_QUEUE_ADVANCE、EVT_PACKET_QUEUE_CANCEL或 EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED 的调用。 此外EvtPacketQueueStop 在同一执行上下文或线程中调用如 EvtPacketQueueAdvance、EvtPacketQueueCancelEvtPacketQueueSetNotificationEnabled因此客户端驱动程序无需在单个队列实例的这些回调函数之间进行同步。

相关新闻

YOLO11-Pose 全栈拆解|OpenPose自底向上PAF热力图、YOLO端到端OKS损失、多场景姿态落地、完整训练推理工程复现

YOLO11-Pose 全栈拆解|OpenPose自底向上PAF热力图、YOLO端到端OKS损失、多场景姿态落地、完整训练推理工程复现

目录 0. 摘要 1. 姿态估计核心认知与行业技术痛点 1.1 视觉任务层级对比:从看见物体到看懂动作 1.2 姿态估计四大核心技术难点 1.3 COCO数据集标准关键点体系 2. 两大主流姿态估计算法全维度拆解 2.1 自底向上流派:OpenPose核心原理(暴力美学架构) 2.1.1 整体网络架…

2026/7/6 14:36:32阅读更多 →
远程办公团队共用 GPT5.5 接口方案

远程办公团队共用 GPT5.5 接口方案

远程办公团队共用 GPT5.5 接口方案远程团队接入 GPT5.5 接口,最容易出问题的不是代码调用,而是“谁在用、用了多少、出错后怎么查”。如果只是把一个 Key 扔到群里,前几天看着省事,后面基本会遇到额度被打满、成员误用生产 Key、日…

2026/7/6 14:36:32阅读更多 →
IX6024 PCIe2.0 @ACP#24通道工业级交换芯片|老旧工控升级与海量边缘IoT时序数据扩容核心(对标ASM1824)

IX6024 PCIe2.0 @ACP#24通道工业级交换芯片|老旧工控升级与海量边缘IoT时序数据扩容核心(对标ASM1824)

一、行业前言:存量工控国产化替换浪潮来袭,PCIe2.0高可靠扩容成为下沉市场刚需2026年国内物理AI与工业智能化产业形成「高端PCIe4.0、中端PCIe3.0、存量工控PCIe2.0」三级并存的完整生态格局。在高端算力集群、中端工作站完成技术迭代的同时,…

2026/7/6 14:36:32阅读更多 →
Camera Shakify:3分钟为Blender动画注入真实电影感的神器

Camera Shakify:3分钟为Blender动画注入真实电影感的神器

Camera Shakify:3分钟为Blender动画注入真实电影感的神器 【免费下载链接】camera_shakify 项目地址: https://gitcode.com/gh_mirrors/ca/camera_shakify 你是否厌倦了Blender动画中那些过于完美的镜头?想要为你的作品增添真实感和电影质感&…

2026/7/6 15:36:46阅读更多 →
如何从零开始掌握计算机科学:终极免费开源自学路线图

如何从零开始掌握计算机科学:终极免费开源自学路线图

如何从零开始掌握计算机科学:终极免费开源自学路线图 【免费下载链接】computer-science 🎓 Path to a free self-taught education in Computer Science! 项目地址: https://gitcode.com/GitHub_Trending/co/computer-science 想要获得系统性的计…

2026/7/6 15:36:46阅读更多 →
如何在PC上使用yuzu模拟器畅玩Switch游戏:完整问题解决指南

如何在PC上使用yuzu模拟器畅玩Switch游戏:完整问题解决指南

如何在PC上使用yuzu模拟器畅玩Switch游戏:完整问题解决指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu是目前最受欢迎的开源任天堂Switch模拟器,让玩家能够在Windows、Linux和Andr…

2026/7/6 15:36:46阅读更多 →
Layan GTK主题架构解析与高级配置实现

Layan GTK主题架构解析与高级配置实现

Layan GTK主题架构解析与高级配置实现 【免费下载链接】Layan-gtk-theme Layan-gtk-theme 项目地址: https://gitcode.com/gh_mirrors/la/Layan-gtk-theme Layan是一款基于Material Design设计理念的现代化GTK主题,专为GTK 3、GTK 2和GNOME Shell桌面环境提供…

2026/7/6 15:36:46阅读更多 →
如何用tiny11builder将Windows 11瘦身50%:新手也能掌握的终极精简指南

如何用tiny11builder将Windows 11瘦身50%:新手也能掌握的终极精简指南

如何用tiny11builder将Windows 11瘦身50%:新手也能掌握的终极精简指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 你是否感觉Windows 11越来越臃肿…

2026/7/6 15:36:46阅读更多 →
ICM-42605与MK20DN128VFM5实现6DOF运动追踪方案

ICM-42605与MK20DN128VFM5实现6DOF运动追踪方案

1. ICM-42605与MK20DN128VFM5的硬件组合解析 在三维空间运动追踪领域,ICM-42605和MK20DN128VFM5这对组合堪称黄金搭档。ICM-42605是TDK旗下InvenSense推出的6轴IMU(惯性测量单元),集成了3轴加速度计和3轴陀螺仪,采用2.…

2026/7/6 15:31:45阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →