我发现DuplicateHandle()非常令人困惑。第三个和第四个参数,hTargetProcessHandle和lpTargetHandle似乎暗示这个API函数做某种形式的进程间通信,但我在网上读到的似乎暗示(没有直接说明)这个函数实际上不能与它自己进程的地址空间之外的任何东西通信,如果你真的想说将本地进程句柄复制到另一个进程,你必须手动完成。
所以,有没有人可以可怜我,明确地告诉我这个函数本身是否有IPC呢?另外,如果它不执行任何IPC,那么这两个参数的意义何在?如果没有发送数据,并且此函数的输出对其他进程不可见,那么怎么会有“目标”呢?
起初,我认为可以调用GetCurrentProcess(),然后使用DuplicateHandle()将本地进程句柄复制到另一个进程,但后来我开始意识到这可能并不容易。
发布于 2019-03-13 14:46:54
第三个参数hTargetProcessHandle被记录为
A handle to the process that is to receive the duplicated handle.这意味着句柄(它只是下面的一个数值)将在目标进程中变得可用。但是,如何将此句柄放入目标进程中,以及在什么上下文中使用它,这超出了该函数的范围。还要注意,"is to receive“是指将来的点数,它指的是调用的结果,因此它必须在调用结束之后。
打个比方,你想允许一个朋友在你的房子里。为此,您将创建门的第二把钥匙。这并不意味着你的朋友现在可以打开你的门,因为你首先必须把门给他们,但这是第一步。
https://stackoverflow.com/questions/55135119
复制相似问题