关于进程间复制socket句柄遇到的问题!
我的代码如下:
SOCKET targetSocket, sockets;
HANDLE hSocket = NULL;
HANDLE hTargetProcesss = NULL;
targetSocket = ....;
hTargetProcesss = OpenProcess(PROCESS_DUP_HANDLE,
true,
g_dwTargetProcessId);
if (hTargetProcesss)
{
BOOL bSuccess = DuplicateHandle(hTargetProcesss,
(HANDLE)targetSocket,
GetCurrentProcess(),
&hSocket,
STANDARD_RIGHTS_REQUIRED, // 此处换为NULL, 最后一个参数
TRUE, // 用DUPLICATE_SAME_ACCESS都不行
0 /*DUPLICATE_SAME_ACCESS*/);
// 返回值为0, 复制不成功
CloseHandle(hTargetProcesss);
}
DWORD dwErr = GetLastError(); // 错误代码 ERROR_ACCESS_DENIED == 5,
// Access is denied.
sockets = (SOCKET)hSocket; // 总为0?? 复制失败
为什么会失败? 是不是socket句柄不是这么复制的, 那么该怎么使用? 请指教!