Windows LPC

本文介绍了Windows系统中LPC(Local Procedure Call)通信的基本步骤,包括创建命名端口、监听及连接请求等过程。详细解释了客户端和服务端如何通过特定API进行交互,以及如何使用nativeapi实现LPC通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天心血来潮看了下LPC,查了些资料,发现涉及到的东西真不少,先记录下吧,研究清楚了再继续。

LPC通信的基本步骤大概如下:
1. NtCreatePort 来创建一个命名端口,这个端口叫连接端口。
2.服务器通过NtListenPort来监听这个连接端口以获得新的通信请求。服务器必须始终有一个
线程在这个端口上等待
3.客户端 NtConnectPort发送一个连接请求道服务器以启动一个新的链接,这个请求被发送到
步骤1所创建的端口上
4.服务器分析链接请求,并且根据它的策略,通过NtAcceptConnectPort和
NtCompleteConnectPort来接收连接
5.连接建立后,客户端和服务端都有了一个端口对象可用于实际通信
6.服务器在连接端口启动一个循环,包括接收新消息,处理消息,以及通过
NtReplyWaitReceivePort来响应客户端
7.NtRequestWaitReplyPort 发送一个新的请求到服务器,并且等待服务器来处理请求,在客
户端与服务器的整个回话期间,步骤6和步骤7将重复进行

其中毛德操写的“漫谈兼容内核之十八:Windows的LPC机制”对LPC的内核实现有了详细的介绍,也可以借鉴

《Windows内核情景分析》其中的LPC一节。看到网上有人用native api实现过LPC通信,回头可以自己试验下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值