DuplicateHandle错误:error_invalid_handle

我正在尝试使用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的实际值。