重复句柄错误:error_invalid_handle
DuplicateHandle error: error_invalid_handle
>我正在尝试使用 DuplicateHandle 函数将句柄从进程 1 传递到进程 2。我使用创建文件函数获取句柄:
HANDLE COMportHandle;
COMportHandle = CreateFile(TEXT("COM5"),
GENERIC_ALL | PROCESS_DUP_HANDLE,
0,
0,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,
0);
在第二个进程中,我首先通过共享内存从进程 1 获取进程 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: %dn",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: %dn",GetLastError());
引入一个新的,未初始化的COMportHandle。所以,假设这是实际的代码,我一点也不惊讶COMportHandle是无效的"。您将以某种方式需要从第一个进程中获取COMportHandle的实际值。
相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- C++ "error: invalid use of void expression"
- 收到错误"invalid use of non-static data member 'stu::n' "
- Poloniex API "Invalid command" c++ libcurl
- C++模板错误:"invalid explicitly-specified argument for template parameter"
- SDL_CreateTextureFromSurface() "Invalid texture"错误?
- C++ "Invalid use of 'this' in non-member function" ,
- protobuf C++ SQLite handle blob data
- 为什么gmp会在这里与"invalid next size"重新定位一起崩溃?
- 继承类时"invalid use of incomplete type ‘class tree_node_t’"
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- "fast"或"normal"在"free(): invalid next size (fast)"中是什么意思?
- 如何在Arduino程序中解决"invalid operands of types"?
- C++ libtins "An invalid handle was specified"
- 尝试执行任何需要它的操作时,无法修复 WinAPI 中的"invalid handle"错误
- 在没有 UWP 的情况下从 C++/WinRT 使用 FileOpenPicker 时出现视觉"Invalid window handle"错误
- WSARecv 有时会返回与 IOCP 端口关联的套接字的"invalid handle (error no 6)"。(C++)
- 为什么我在调用 GetThreadTimes 时收到错误"The handle is invalid"?