开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 莫爱
收起左侧

[易源码分享] R3应用层利用AFD驱动,编写自己的高效Socket服务

    [复制链接]
发表于 2022-5-5 00:57:47 | 显示全部楼层   江西省南昌市

支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2022-5-5 00:34:56 | 显示全部楼层   广东省江门市
开源精神必须支持~
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 4 天

发表于 2022-5-4 23:57:57 | 显示全部楼层   福建省三明市
        开源精神必须支持~
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 18 天

发表于 2022-5-4 23:41:20 | 显示全部楼层   广西壮族自治区南宁市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2022-5-4 23:27:04 | 显示全部楼层   湖南省长沙市
谢谢分享哦
回复 支持 反对

使用道具 举报

签到天数: 16 天

发表于 2022-5-4 22:46:13 | 显示全部楼层   广东省广州市
感谢大佬分享
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2022-5-4 22:29:17 | 显示全部楼层   江西省赣州市
赞!!感谢分享!
回复 支持 反对

使用道具 举报

发表于 2022-5-4 21:56:02 | 显示全部楼层   江苏省苏州市
太厉害了
回复 支持 反对

使用道具 举报

结帖率:65% (15/23)

签到天数: 20 天

发表于 2022-5-4 21:42:29 | 显示全部楼层   河北省邯郸市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:43% (3/7)

签到天数: 5 天

发表于 2022-5-4 21:11:17 | 显示全部楼层   浙江省台州市

本帖最后由 莫爱 于 2022-5-2 17:12 编辑


1,什么是afd驱动
socket机制在windwos系统中的实现分为用户空间和内核空间实现,
用户空间就是 ws2_32.lib 这个dll 库  

系统空间就是afd.sys驱动




简来说AFD驱动向上与SOCKET应用接口约定了接口来实现SOCKET,AFD驱动实际上是一个TDI客户端,它通过TDI接口调用微软件的另一个网络部件TCPIP驱动来完成功能。AFD并没有官方的资料说明它的接口,但是在网上还是可以找到很关于AFD驱动的资料的。




相对来说国外对AFD驱动在国外利广泛,很多大型游戏厂商利用AFD 开发出自己的socket服务达到隐藏sned recv 等函数。




AFD驱动模块函数功能对
NTSockets_CreateTcpSocket            =  socket() 用NtCreateFile 创建“\Device\Afd\Endpoint”

NTSockets_ConvertIP                   = inet_addr() 纯源码实现这样更加健康防止OD
NTSockets_Swap16BitByteOrder                  = htons()| ntohs()
NTSockets_Connect                             = connect()    用 NtDeviceIoControlFile 控制码IOCTL_AFD_CONNECT:0x12007
NTSockets_WSAEventSelect              = WSAEventSelect    用 NtDeviceIoControlFile 控制码IOCTL_AFD_EVENT_SELECT:0x12087
NTSockets_WSAEnumNetworkEvents = WSAEnumNetworkEvents    用 NtDeviceIoControlFile 控制码IOCTL_AFD_ENUM_NETWORK_EVENTS:0x1208b
NTSockets_Recv                              =  Recv   用 NtDeviceIoControlFile 控制码IOCTL_AFD_RECV:0x12017
NTSockets_Send                             = Send   用 NtDeviceIoControlFile 控制码IOCTL_AFD_SEND:0x1201f
其他函数陆续会更新,现在的版本基本功能已经实现
使用有问题可以给我反馈就行修复





需要生成调试,用OutputDebugStringA函数输出
用Dbgview接收日志
全部有带









AFD驱动控制码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表