[英]How to get process id of other endpoint in inter-process communication
我想使用Win32 C ++ API知道哪个IPC方法允许多进程通信中的任何端点获取与其通信的进程的PID或HANDLE。 换句话说,如果进程A从进程B获得消息:
通讯的目的是一个简单的远程过程调用。 但是,我不希望远程系统/主机上的进程调用本地主机上运行的进程提供的过程。
当然,我已经在MSDN上找到了RPC文档 。 但是,我想知道是否有比RPC更好的方法来实现我想要的。 或者,如果您认为要走RPC的道路,能否请您告诉我原因,以及您是否可以从MSDN中学到其他好的参考资料?
如果要仅将RPC限制为本地计算机,则应将RPC系统绑定到“ 127.0.0.1”。 这样,只有本地进程才能与此端口通信!
我对所有方法都不熟悉
对于WM_COPYDATA
方法,您可以:
wParam
A handle to the window passing the data.
因此您可以在其上使用GetWindowThreadProcessID
,但WM_COPYDATA可在单台PC上使用
http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms649011%28v=vs.85%29.aspx
要确定谁打开了给定的句柄,您将必须使用一些低级技巧,例如SysInternals的handle.exe程序( http://forum.sysinternals.com/topic18892.html )。
如果使用命名管道实现自己的RPC,则将能够使用服务器进程中的GetNamedPipeClientProcessId来获取本地端点客户端进程的PID。
编辑:如果您确实追求安全性,则第一条规则是“您不得编写自己的系统”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.