这是一款支持跨进程或跨层的高效通讯模块. 其内核是以微软的LPC(Local Procedure Call)技术为主, LPC是微软内部广泛使用的一种跨进成通讯手段, 深为人知的CSRSS.EXE就是其中应用的代表之一.内核的MiniFilter框架中也将LPC重新包装后用于R0/R3的数据通讯 ,与其它的通讯手法相比, LPC在多线程效率和安全上有着无法比拟的优势, 但微软不对其接口进行文档化,也阻挡了不少对这项技术热心的朋友.

LICOM模块在LPC技术的基础上, 做了大量的改进, 并且经过了长达多年的应用以及修正后到目前为止的版本是最稳定的一个.LICOM的改进如下:

  • 支持任意环境使用, 即可支持内核模式,也可支持用户模式.
  • 支持混合环境使用, 支持R0/R3的双向通讯,
  • 支持x86/x64平台的混合通讯.
  • 每秒至少超过20万个报文的发送并且到达.
  • 支持多个客户端同时通讯,同时连接.1s的Timer在10客户端并发数据时,CPU占用不到1%
  • 支持数据加密操作, 使用内部的类AES分组加密方式. 效率非常高
  • 每条消息以及每个客户端都有LUID进行标识

通讯截图:
all.png


下载须知:
  • 提供的版本为免费使用版本,  使用者可以应用在任意产品或程序上. 转载请注明来源(http://rerede.com/)
  • 为了避免一些不必要的麻烦, 所以对于数据报文的收发做了一个长度限制, 最大单次发送长度为1K. 同时你不需要担心这个限制会有什么弊端,, 因为:
           1.  对于个人产品,单次1K的通讯大小基本够用
           2.  对于有特殊要求的产品,完全可以利用LUID再做一次报文重组/分片
           3.  对于商业特殊要求的产品,可以联系我
  • 下载的包裹内的所有程序均已签名
  • 下载的内容包含了x86和x64平台的DLL模块文件(licom.dll) , lib文件(licom.lib)以及头文件
  • 所有文件均使用WinDDK 7601编译. 推荐使用VS2008或其他相应等级的编译器进行编译
  • DEMO程序包含了Server.exe和client.exe.其源码在demo_src.zip中
  • 如果在使用过程中,有任何问题或建议,可以提交到http://rerede.com/forum-74-1.html

SDK以及接口下载, 最后更新于2013-07-02:
2013-07-02.zip (443 KB, 下载次数: 458)

DEMO源码:
demo_src.zip (65.32 KB, 下载次数: 345)

内核DEMO:
driver.zip (50.93 KB, 下载次数: 401)

2# liio 发表于 2012-11-13 11:31:13
2012/11/12  "5.0.1211.1204"
1. 添加了KERNEL MODE编译条件,现在支持编译为内核动态库了
2. 修改了DP_VERSION,在文件信息的"发行版本"前添加了"内核"或"用户"来区分编译模式
3. 修改了发布的目录结构, 用户模式的SDK位于USERMODE中,内核库位于KERNELMODE
4. 新增What's New.txt

2012/11/13  "5.0.1211.1208"
1. 添加了内核DEMO

2012/11/19  "5.0.1211.1900"
1. 修正了由底层LIB编译引起的内核接口在Request请求时回复请求方数据后造成访问异常的BUG
2. 添加了一部分注释 (CLIENTAPI.H)

2012/11/24  "5.0.1211.2401"
1. 修正Request函数未正确初始化回复缓冲区指针为NULL进行调用可能引起的崩溃问题

2012/11/24  "5.0.1211.2501"
1. 修正Request函数没有正确的进行回复报文栈所引起的回复内容几率丢失问题(http://t.qq.com/p/t/150756001902504)
2. 修正了Request函数在返回特定长度范围的数据时死锁的BUG

2012/12/01  "5.0.1212.0101"
1. 修正回复数据栈上句柄泄露的BUG
2. 改善了Disconnect回调的调用顺序

2012/12/03  "5.0.1212.0302"
1. 增加了一些调试信息以及错误代码
2. 优化了数据端口、连接监听端口循环的容错处理。现在碰到资源不足或系统端口错误时不会再中断数据以及连接(暂行)
2. 修正了一处可能导致服务端口无法连接或监听的重大BUG(由于句柄在线程启动后传递造成)

2012/12/11  "5.0.1212.1101"
1. 增加了一套C标准接口分别为lisapi.h 对应serverapi.h, licapi.h 对应clientapi.h

2013/01/17 "无版本号变更"
1. 修正Windows 8 x64下DLL崩溃的问题, 感谢热心XD的消息

2013/07/02  "5.1.1307.0202"
1. 修正多处细小错误.
2. 加入异常上抛
3. 修正了ReadRequestData已经成功,但返回失败的BUG
4. 修正了错误的判断符号导致调用WriteRequestData失败和请求卡死
5. 增加了限制的请求发送长度到0x700, 消息长度为0x400

3# sdxiao 发表于 2012-11-13 23:25:09
不错看1. 添加了内核DEMO
4# sdxiao 发表于 2012-11-13 23:26:00
期待开源,公开技术
5# loveyou 发表于 2012-11-16 22:18:48
不知可否在DISPATCH_LEVEL 级别使用
6# liio 发表于 2012-11-16 22:57:42
loveyou 发表于 2012-11-16 22:18
不知可否在DISPATCH_LEVEL 级别使用

SEND和REQUEST以及初始化函数在DISPATCH_LEVEL不能直接使用, 你需要使用新建一个队列,到队列中使用.
支持的中断级别为: <= APC_LEVEL
支持的操作系统为: Windows 2000 / XP / VISTA / 7 / 8
                             Windows Server 2003 / 2008 / 2012
7# liio 发表于 2012-11-16 23:06:06
详细的接口文档我将陆续更新出来..
8# sdxiao 发表于 2012-11-18 02:58:23
详细的接口文档我将陆续更新出来..
9# muyen 发表于 2012-11-19 00:19:38
没钱,不能成为正式用户
10# liio 发表于 2012-11-19 10:14:02
muyen 发表于 2012-11-19 00:19
没钱,不能成为正式用户

论坛会员就是正式用户呀~而且现在也木有收费版本, 除非是哪位想要定制了~
这套SDK功能上都是开放的, 长度部分的限制在实际使用中可以忽略.
而且微软LPC仅256 bytes
您需要登录后才可以回帖 登录 | 获取账号

Archiver|Rerede.com     

GMT+8, 2017-10-23 12:27

Powered by R-Team X2

© 2011-2012 Rerede.com.

回顶部