WINAPI中的DuplicateHandle返回ERROR_ACCESS_DENIED

时间:2011-08-05 11:24:37

标签: winapi

我有两个匿名管柄。我想将其中一个传递给子进程 如果我调用DuplicateHandle使句柄可以继承管道的写句柄,它可以正常工作:

DuplicateHandle(myHandle, fdCP[1], myHandle, &fdCP[1], DUPLICATE_SAME_ACCESS, 1, DUPLICATE_CLOSE_SOURCE);

但是当为另一个管道的读取句柄执行此操作时,我在结果句柄中得到0x00000000值。

在这种情况下,

GetLastError为5(ERROR_ACCESS_DENIED)。我在创建管道时尝试提供SECURITY_ATTRIBUTES GENERIC_ALL|SPECIFIC_RIGHTS_ALL。但它没有帮助。

我注意到DuplicateHandle按预期工作,如果在读句柄上调用如下:

DuplicateHandle(myHandle, fdPC[0], myHandle, &fdPC[0], 0, 1, DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS);

在这两种情况下,myHandle都是GetCurrentProcess()

所以问题是这是WINAPI中的错误吗?这是一个正确的解决方法吗?

0 个答案:

没有答案