DuplicateHandle()是否进行任何进程间通信(IPC),如果没有,为什么要使用params?

问题描述 投票:1回答:1

我发现DuplicateHandle()非常混乱。第三和第四个参数,hTargetProcessHandle和lpTargetHandle似乎暗示这个API函数进行某种形式的进程间通信,但我在网上阅读的内容似乎暗示(不说直接)实际上这个函数无法与之外的任何东西进行通信它自己的进程的地址空间,如果你真的想说将本地进程句柄复制到另一个进程,你必须自己手动完成。

那么请有人请怜悯我并明确告诉我这个功能是否有任何IPC本身?如果它没有做任何IPC,那么这两个参数的重点是什么?如果没有数据发送,并且该功能的输出对其他进程不可见,那怎么会有'目标'?

起初我以为我可以调用GetCurrentProcess()然后使用DuplicateHandle()将本地进程句柄复制到另一个进程,但后来我开始意识到它可能并不那么容易。

c++ c windows ipc handle
1个回答
2
投票

第三个参数hTargetProcessHandle记录为

A handle to the process that is to receive the duplicated handle.

这意味着句柄(它只是下面的数值)将在目标进程中变得可用。但是,如何将此句柄放入目标进程以及在何种上下文中使用它不在该函数的范围内。另请注意,将来会“接收”积分并且它指的是呼叫的结果,因此必须在呼叫结束后。

作为类比,你想允许你家里的朋友。为此,您正在为您的门创建第二把钥匙。这并不意味着你的朋友现在可以解锁你的门,因为你首先必须给他们,但这是第一步。

© www.soinside.com 2019 - 2024. All rights reserved.