WEB开发网
开发学院软件开发VC 基于SPI的数据报过滤原理与实现 阅读

基于SPI的数据报过滤原理与实现

 2010-02-19 20:34:24 来源:WEB开发网   
核心提示://安装自定义的IP分层协议iplayercataid=protoinfo[i].dwCatalogEntryId;//获得已安装自定义IP分层协议的由Ws2_32.dll分配的唯一标志udpchaininfo.ProtocolChain.ChainEntries[0]=iplayercataid;//将自定义的IP分

//安装自定义的IP分层协议

iplayercataid=protoinfo[i].dwCatalogEntryId;

//获得已安装自定义IP分层协议的由Ws2_32.dll分配的唯一标志

udpchaininfo.ProtocolChain.ChainEntries[0]=iplayercataid;

//将自定义的IP分层协议作为自定义UDP协议链的根分层服务提供者安装在协议链的顶端

WSCInstallProvider(&filterchainguid,filter_path,chainarray,provcnt,&errorcode);

//安装协议链

WSCWriteProviderOrder(cataentries,totalprotos);

//更新所有服务提供者的安装顺序,把自定义的服务提供者排在所有协议的最前列

WSCDeinstallProvider(&filterguid,&errorcode);

//卸载IP分层协议

WSCDeinstallProvider(&filterchainguid,&errorcode);

//卸载协议链

2.ipfilter.dll

传输服务提供者都是以动态链接库的形式存在的,在应用程序需要时由Ws2_32.dll加载,在用完之后就被卸载。本文的ipfilter.dll提供了对发送的UDP数据报进行过滤的功能。也就是自定义WSPSendTo函数,在调用系统服务提供者之前进行过滤,判断是否继续向下调用,而其他的函数都是直接调用下层的系统服务提供者由它们直接处理。传输服务提供者只有一个入口函数就是WSPStartup,它是Windows Socket 应用程序调用SPI的初始化函数,其他SPI函数的调用都是通过WSPStartup的参数WSPUPCALLTABLE来实现的。

自定义函数:

int WSPAPI WSPSendTo(SOCKET s,LPWSABUF lpbuffer,DWORD dwbuffercount,LPDWORD lpnumberofbytessent,

DWORD dwflags,const struct sockaddr FAR *lpto,int itolen,LPWSAOVERLAPPED lpoverlapped,

LPWSAOVERLAPPED_COMPLETION_ROUTINE lpcompletionroutine,LPWSATHREADID lpthreadid,LPINT lperrno);

//SPI函数WSPSendTo和Windows Socket 2的API函数WSASendTo相对应

int WSPAPI WSPStartup(WORD wversionrequested,LPWSPDATA lpwspdata,LPWSAPROTOCOL_INFOW lpprotoinfo,

WSPUPCALLTABLE upcalltable,LPWSPPROC_TABLE lpproctable);

//SPI函数WSPStartup和Windows Socket 2的API函数WSAStartup相对应,WSPStartup是唯一的入口函数,剩下的30个SPI函数则是通过参数upcalltable来实现的,它们只能在内部调用,不向外提供入口

代码分析:

GetModuleFileName(NULL,processname,MAX_PATH);

//获得调用本服务提供者动态链接库的可执行文件的全名

OutputDebugString(_T("WSPSendTo Tencent Filtered"));

//输出调试信息

nextproctable.lpWSPSendTo(s,lpbuffer,dwbuffercount,lpnumberofbytessent,dwflags,lpto,

itolen,lpoverlapped,lpcompletionroutine,lpthreadid,lperrno);

//如果数据报满足发送条件,调用下层系统服务提供者发送数据

layerid=protoinfo[i].dwCatalogEntryId;

上一页  1 2 3 4 5 6  下一页

Tags:基于 SPI 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接