首页
社区
课程
招聘
12.11更新.LICOM高效LPC通讯接口 v5.0.1212.1101 SDK以及源码下载
2012-11-10 11:04 10468

12.11更新.LICOM高效LPC通讯接口 v5.0.1212.1101 SDK以及源码下载

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

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

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

通讯截图:

下载须知:
•提供的版本为免费使用版本,  使用者可以应用在任意产品或程序上. 转载请注明来源(http://rerede.com/)
•为了避免一些不必要的麻烦, 所以对于数据报文的收发做了一个长度限制, 最大单次发送长度为1K. 同时你不需要担心这个限制会有什么弊端,, 因为:


  • 对于个人产品,单次1K的通讯大小基本够用
  • 对于有特殊要求的产品,完全可以利用LUID再做一次报文重组/分片
  • 对于商业特殊要求的产品,可以联系我


•下载的包裹内的所有程序均已签名
•下载的内容包含了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下载:

bin.zip

DEMO源码:

DEMO源码在官方社区, 需要的去http://rerede.com/forum-74-1.html下载

=======================================
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)

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

附件已经更新~内核DEMO也已上传在官方论坛
内核部分的注意事项请参考: http://rerede.com/thread-11949-1-1.html

更新版本1211.2501下载
1211.2501.zip

最新更新版本1212.1101下载
push.zip

历史版本下载:
111900.zip

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (17)
雪    币: 1231
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
boywhp 12 2012-11-10 18:20
2
0
友情帮顶吧,话说为什么不完全开源呢?
另外提个小意见吧,
1、你DEMO不应该用VC9啊 我都打不开
2、而且明显应该用控制台写嘛~ DEMO之王友情提醒下
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2012-11-10 19:37
3
0
WO KAO .马甲被识破了~~
我惯用VC9...
那个控制台的demo.太简单了.
首先initialize然后create/connect,接着wait for disconnect就搞定.
数据全部在重载的函数里获取~
你看..  一句话描述控制台~
雪    币: 279
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
forlovefor 2012-11-12 00:48
4
0
内核和用户模式都可用,这点不错
雪    币: 243
活跃值: (149)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xicao 2012-11-12 10:07
5
0
进程间通信更高效了
雪    币: 144
活跃值: (42)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ProbieTmp 2012-11-12 10:55
6
0
支持ILO~
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2012-11-12 10:57
7
0
内核lib稍后提供,在实验一种irp的计数机制,让动态加卸载更安全
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2012-11-13 11:47
8
0
内核demo已经更新了.
把licom.sys拷贝到系统的drivers目录
然后用工具直接加载demo驱动后,使用sdk中的client.exe连接到端口
\\RPC Control\KernelPort
就可以看到效果.
调试信息如下:
LPC ENTRY.
CLIENT CONNECT## PID=00000E04, CLIENTID=0007BD39
CLIENT CONNECT SUCCESS## PID=00000E04
[LPC]# Connect port success!

关闭client后
CLIENT DISCONNECT SUCCESS## PID=00000E04
CLIENT DISCONNECT## PID=00000000
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2012-11-18 22:57
9
0
2012/11/19  "5.0.1211.1900"
licom.sys有个BUG.可能导致内核出现异常,而不会蓝屏.因为异常被监听线程捕获并且忽略
这个BUG由于编译错误导致,现已修复. 测试完成后发布修复版
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2012-11-19 16:37
10
0
1900版本已经更新并上传,除了BUG修正外,  添加了部分注释说明.
更详细的接口说明文档也正在编写~
雪    币: 309
活跃值: (83)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
muyen 2012-11-20 22:15
11
0
这个确实是好东西,喜欢
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2012-11-25 14:43
12
0
LICOM v1211.2401 中存在一个Request后返回回复数据有几率丢失的BUG,造成的原因是由于Reply的数据到达时,Reply对应的报文栈因报文尚未到底导致栈未建立,最终Reply无法获取报文栈所有数据,导致异常错误退出,调用者将获取到一个错误的回复大小返回,一般为0.目前正在尝试优化算法~

目前在122501中已经修正。这个BUG比较严重。通常出现在超256以上字节的请求回复中
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2012-12-3 13:28
13
0
累计发现的BUG以及修正日志, 待完全测试后再上传稳定版本.

2012/12/01  "5.0.1212.0101"

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

2012/12/03  "5.0.1212.0302"

1. 增加了一些调试信息以及错误代码
2. 优化了数据端口、连接监听端口循环的容错处理。现在碰到资源不足或系统端口错误时不会再中断数据以及连接(暂行)
2. 修正了一处可能导致服务端口无法连接或监听的重大BUG(由于句柄在线程启动后传递造成)
雪    币: 279
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
forlovefor 2012-12-10 02:00
14
0
用c写的代码链接时出现如下错误
error LNK2019: unresolved external symbol _CreatePort@20 referenced in function _DriverEntry@8
而我用lordpe看了licom.sys的导出函数是c++格式的,不知是不是函数修饰名不对的原因。。

不知可否给个c语言的 静态lib 。
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2012-12-10 21:42
15
0
好的. 我将在licom.sys中导出一套C函数接口.
连同这几天更新一起发布.
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2012-12-11 17:48
16
0
增加了一套C标准接口分别为lisapi.h 对应serverapi.h, licapi.h 对应clientapi.h
如果使用C接口, 仅需要include li*api.h文件
如果使用cpp,需要include 对应的c文件
比如:
#include "licapi.h"
#include "clientapi.h"

demo源码没有做相应修改, 下载后麻烦自己修改一下即可~
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
itnew 2013-7-21 13:32
17
0
不太道德啊 ,不开源的东东 拿来何用?
雪    币: 14
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ultrajob 2013-8-16 15:49
18
0
不开源就不道德了? 拿来没用的东西你回复干嘛呢?
游客
登录 | 注册 方可回帖
返回