gpt4 book ai didi

c++ - 重复句柄错误 : error_invalid_handle

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:04 28 4
gpt4 key购买 nike

我正在尝试使用 DuplicateHandle 函数将句柄从 process1 传递到 process2。我使用 CreateFile 函数获取句柄:

HANDLE COMportHandle;
COMportHandle = CreateFile(TEXT("COM5"),
GENERIC_ALL | PROCESS_DUP_HANDLE,
0,
0,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,
0);

在第二个进程中,我先通过共享内存从process1中获取进程ID,然后尝试复制句柄:

HANDLE pr1handle, CPH, COMportHandle;
pr1handle = OpenProcess(PROCESS_DUP_HANDLE,FALSE,process_id);
if(!DuplicateHandle(pr1handle,COMportHandle,GetCurrentProcess(),&CPH,PROCESS_DUP_HANDLE,FALSE,0))
printf("Error: %d\n",GetLastError());

然后我得到 ERROR_INVALID_HANDLE。进程不相关,我运行第一个以打开 COM 端口,然后希望能够使用第二个进程从中读取。谁能告诉我问题在哪里?

最佳答案

在此代码中:

HANDLE pr1handle, CPH, COMportHandle;
pr1handle = OpenProcess(PROCESS_DUP_HANDLE,FALSE,process_id);
if(!DuplicateHandle(pr1handle,COMportHandle,GetCurrentProcess(),&CPH,PROCESS_DUP_HANDLE,FALSE,0))
printf("Error: %d\n",GetLastError());

您引入了一个新的、未初始化的 COMportHandle。因此,假设这是实际代码,我一点也不惊讶 COMportHandle 无效。您将需要以某种方式从第一个进程中获取 COMportHandle 的实际值。

关于c++ - 重复句柄错误 : error_invalid_handle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14500232/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com