duanshuaimin / protobuf-remote

Automatically exported from code.google.com/p/protobuf-remote
0 stars 0 forks source link

Windows ALPC transport #10

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Reading about local IPC on Windows leads me to idea that Named Pipes is not the 
transport should be used where Unix Domain sockets are on Unix. Other, most 
probably faster, should be.
ALPC and Unix Domain sockets are similar:
1. No networking
2. Simple names (no specific prefix)
3. Articles impress that Windows ALPC and Unix Domain Sockets use more OS 
"kernel" then Windows Named Pipes.
Unix Domain sockets and Windows Named Pipes:
1. Named pipes are design for Windows Domain printer and file sharing, not 
local IPC.
2. means Named Pipes do some networking even if are local by security.
True MS design:
Local Out of process COM and MS-RPC uses ALPC for local inter process 
communication everywhere in the OS components.
Can find in many processes via Sysinternals Process Monitor, look for
ALPC Port : \RPC Control\OLE[RANDOM_GUID].
Value:
I think would be faster with lower resource usage.
Links:
http://en.wikipedia.org/wiki/Local_Procedure_Call
http://www.zezula.net/en/prog/lpc.html
Search LRPC on http://technet.microsoft.com/en-us/library/cc738291(v=ws.10).aspx

Original issue reported on code.google.com by Dzmitry....@gmail.com on 18 Mar 2013 at 10:41

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
LPC API is exported only at kernel level, for Win32 applications use it, the 
Windows RPC API should be used specifying LPC as the transport.
Also Named Pipes are there by a long time and are considerable reliable. There 
is no networking involved as long the host is the current computer.

Original comment by greenbo...@gmail.com on 4 Jul 2013 at 8:16