开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 18392|回复: 253
收起左侧

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

    [复制链接]
发表于 2022-5-2 17:05:24 | 显示全部楼层 |阅读模式   广东省潮州市
分享源码
界面截图:
是否带模块: -
备注说明: -
本帖最后由 莫爱 于 2022-5-2 17:12 编辑

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

系统空间就是afd.sys驱动

火狐截图_2022-05-02T08-15-45.520Z.png


简来说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驱动控制码 和 AFD驱动易源码20220502


不懂的翻译

IOCTL_AFD_BIND:12003
IOCTL_AFD_CONNECT:12007
IOCTL_AFD_START_LISTEN:1200b
IOCTL_AFD_WAIT_FOR_LISTEN:1200c
IOCTL_AFD_ACCEPT:12010
IOCTL_AFD_RECV:12017
IOCTL_AFD_RECV_DATAGRAM:1201b
IOCTL_AFD_SEND:1201f
IOCTL_AFD_SEND_DATAGRAM:12023
IOCTL_AFD_SELECT:12024
IOCTL_AFD_DISCONNECT:1202b
IOCTL_AFD_GET_SOCK_NAME:1202f
IOCTL_AFD_GET_PEER_NAME:12033
IOCTL_AFD_GET_TDI_HANDLES:12037
IOCTL_AFD_SET_INFO:1203b
IOCTL_AFD_GET_CONTEXT_SIZE:1203f
IOCTL_AFD_GET_CONTEXT:12043
IOCTL_AFD_SET_CONTEXT:12047
IOCTL_AFD_SET_CONNECT_DATA:1204b
IOCTL_AFD_SET_CONNECT_OPTIONS:1204f
IOCTL_AFD_SET_DISCONNECT_DATA:12053
IOCTL_AFD_SET_DISCONNECT_OPTIONS:12057
IOCTL_AFD_GET_CONNECT_DATA:1205b
IOCTL_AFD_GET_CONNECT_OPTIONS:1205f
IOCTL_AFD_GET_DISCONNECT_DATA:12063
IOCTL_AFD_GET_DISCONNECT_OPTIONS:12067
IOCTL_AFD_SET_CONNECT_DATA_SIZE:1206b
IOCTL_AFD_SET_CONNECT_OPTIONS_SIZE:1206f
IOCTL_AFD_SET_DISCONNECT_DATA_SIZE:12073
IOCTL_AFD_SET_DISCONNECT_OPTIONS_SIZE:12077
IOCTL_AFD_GET_INFO:1207b
IOCTL_AFD_EVENT_SELECT:12087
IOCTL_AFD_DEFER_ACCEPT:1208f
IOCTL_AFD_GET_PENDING_CONNECT_DATA:120a7
IOCTL_AFD_ENUM_NETWORK_EVENTS:1208b
IOCTL_AFD_VALIDATE_GROUP:120ab


新建文件夹 (6).zip (479.24 KB, 下载次数: 453)

评分

参与人数 13好评 +10 精币 +19 收起 理由
flyk + 1 感谢分享,很给力!~
hhhql + 1 感谢分享,很给力!~
微风已过 + 1 感谢分享,很给力!~
inat + 1 + 2 支持开源~!感谢分享
540760448 + 1 + 1 开源精神必须支持~
易语言资源网 + 1 + 3 支持开源~!感谢分享
xlsqwg + 1 + 2 很好,发现新世界,感谢分享
绽放青春 + 1 虽然看不懂,但是觉得好牛B
fjgh + 1 + 2 支持开源~!感谢分享
王者路太艰难 + 1 + 2 支持开源~!感谢分享
猪滴寳貝哝 + 1 + 2 开源精神必须支持~
yujiekuxiao + 1 + 2 这么厉害!必须给个红包鼓励下~
a524666979 + 1 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

发表于 2024-3-19 11:58:34 | 显示全部楼层   山东省东营市
虽然看不懂,但觉得很厉害!
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2024-3-19 10:43:17 高大上手机用户 | 显示全部楼层   贵州省贵阳市
开源支持一下
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2023-7-16 08:39:39 | 显示全部楼层   陕西省延安市
实现了啥?
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2023-7-15 14:33:57 | 显示全部楼层   陕西省延安市
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2023-6-2 15:10:15 | 显示全部楼层   黑龙江省牡丹江市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2023-5-31 09:34:41 | 显示全部楼层   浙江省台州市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2023-5-4 21:58:34 | 显示全部楼层   江苏省南京市
感谢分享
回复 支持 反对

使用道具 举报

发表于 2023-4-26 12:16:53 | 显示全部楼层   广西壮族自治区来宾市
66666666666666666666
回复 支持 反对

使用道具 举报

结帖率:88% (14/16)

签到天数: 25 天

发表于 2023-4-7 22:50:08 | 显示全部楼层   安徽省六安市
研究一下
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2023-3-22 17:58:46 | 显示全部楼层   湖北省武汉市
看下怎么用
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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