要将HANDLE传输到不同的进程,请使用函数DuplicateHandle,它将创建一个重复的句柄,引用同一对象,但在另一个进程中。然后,您必须通过IPC的某种方式将新HANDLE的值(在原始进程中不可用)传递给另一个进程。你可以使用共享内存,或者发送消息,或者...任何允许你发送一个sizeof(void*)的整数,即以C a uintptr_t表示。然后,您只需将HANDLE转换为uintptr_t,然后将该数值发送到另一个进程,在那里您将其转换回HANDLE。 您必须手动完成这一操作,因为没有任何机制来告知进程突然突然将一个全新的HANDLE魔法到他们的任务上下文中。
1条答案
按热度按时间rjzwgtxy1#
要将
HANDLE
传输到不同的进程,请使用函数DuplicateHandle
,它将创建一个重复的句柄,引用同一对象,但在另一个进程中。然后,您必须通过IPC的某种方式将新HANDLE
的值(在原始进程中不可用)传递给另一个进程。你可以使用共享内存,或者发送消息,或者...任何允许你发送一个sizeof(void*)
的整数,即以C auintptr_t
表示。然后,您只需将HANDLE
转换为uintptr_t
,然后将该数值发送到另一个进程,在那里您将其转换回HANDLE
。您必须手动完成这一操作,因为没有任何机制来告知进程突然突然将一个全新的
HANDLE
魔法到他们的任务上下文中。