当前位置: 首页 > news >正文

WinDivert学习文档之五-————编程API(八)

5.8 WinDivertSendEx

BOOL WinDivertSendEx(__in HANDLE handle,__in const VOID *pPacket,__in UINT packetLen,__out_opt UINT *pSendLen,__in UINT64 flags,__in const WINDIVERT_ADDRESS *pAddr,__in UINT addrLen,__inout_opt LPOVERLAPPED lpOverlapped
);

参数

一个由WinDivertOpen()创建的有效的WinDivert句柄。

  • handle:包含要注入的包的缓冲区。
  • packetLen:缓冲包的总长度。
  • pSendLen:注入的总字节数。如果不需要此信息,则可以为NULL。
  • flags:保留,设置为0。
  • pAddr:注入报文的地址。
  • addrLen: pAddr缓冲区的总长度(单位为字节)。
  • lpOverlapped: 指向OVERLAPPED结构的可选指针。

返回值
如果数据包被成功注入,则为TRUE,否则为FALSE。使用GetLastError()来获取原因。错误码ERROR_IO_PENDING表示重叠操作已成功启动,稍后将指示完成。所有其他代码表示错误。

说明:
这个函数等价于WinDivertSend(),除了:

  • 通过lpoverlap参数支持重叠I/O。
  • 支持批处理I/O(即一次发送多个数据包)。

        批处理I/O使得使用单个操作一次发送最多WINDIVERT_BATCH_MAX数据包成为可能,从而减少了内核/用户模式上下文切换的数量并提高了性能。使用批处理I/O:

  • 将N个数据包装入pPacket缓冲区(数据包之间没有间隙);
  • 设置packetLen为N个数据包长度的总和;
  • 将对应的N个WINDIVERT_ADDRESS地址结构打包到pAddr缓冲区中;和
  • 设置addrLen为pAddr缓冲区的总大小(以字节为单位)。

http://www.dtcms.com/a/392538.html

相关文章:

  • 【LVS入门宝典】LVS NAT模式深度解析:流量走向与IP包头修改机制
  • 第二章 微调:定制专属模型——从通用能力到场景适配
  • 为统信UOS2.0离线安装python3.11.9开发环境
  • Maven 进阶:依赖管理的 “坑” 与解决方案
  • 2.15Vue全家桶-VueRouter
  • 五、Maven引入
  • 通过 TypeScript 在 Vue 3 中利用类型系统优化响应式变量的性能
  • Maven 入门:从 “手动导包” 到 “自动化构建” 的第一步
  • 【Python】数组
  • AI任务相关解决方案18-基于大模型、MCP、Agent与RAG技术的数据分析系统研究报告
  • 飞牛NAS系统版本重大更新:支持挂载115网盘!挂载教程来袭!
  • SpringAI、Dify与Ollama的技术落地与协作
  • Python Selenium 核心技巧与实战:从基础操作到极验滑动验证码破解
  • PyQt6 实战:多源输入 ASCII 艺术转换器全解析(图片 / 视频 / 摄像头实时处理 + 自定义配置)
  • Java 大视界 —— Java 大数据在智能农业病虫害精准识别与绿色防控中的创新应用
  • Qt qDebug()调试函数,10分钟讲清楚
  • Go语言基于 DDD(Domain Driven Design)领域驱动设计架构实现备忘录 todolist
  • Go基础:Go变量、常量及运算符详解
  • c++如何开发游戏
  • 3D体素(Voxel)算法原理内容综述
  • 家庭劳务机器人进化史:从单一功能到全能管家的四阶跃迁
  • 【工具推荐及使用】——基于pyecharts的Pythpn可视化
  • Transformer实战(19)——微调Transformer语言模型进行词元分类
  • ModelView【QT】
  • ES6 promise-try-catch-模块化开发
  • webrtc弱网-ProbeController类源码分析与算法原理
  • Pycharm远程同步Jetson Orin Super
  • 深入解析Tomcat类加载器:为何及如何打破Java双亲委派模型
  • 基于BP神经网络的PID控制器matlab参数整定和性能仿真
  • RabbitMQ死信队列与幂等性处理的性能优化实践指南