DuplicateHandle関数を使用してprocess1からprocess2にハンドルを渡そうとしています。CreateFile関数を使用してハンドルを取得します。
HANDLE COMportHandle;
COMportHandle = CreateFile(TEXT("COM5"),
GENERIC_ALL | PROCESS_DUP_HANDLE,
0,
0,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,
0);
2番目のプロセスでは、最初に共有メモリを介して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ポートを開き、次に2番目のプロセスでそこから読み取れるようにします。誰かがキャッチがどこにあるか教えてもらえますか?