0

win32pipe.PeekNamedPipe 获取参数 pyHandle(read handle) 和 buf size 。pyHandles 由 win32pipe.createPipe() 返回,它为我提供了管道的读写句柄。

现在,假设我已经将此管道的读取句柄的句柄/整数值传递给另一个进程。我想通过传入 pyHandle 使用 peekNamedPipe 方法读取句柄上的数据。

我在其他地方读到,接受 pyHandles 的函数也将接受 int 值,但在这种情况下它不接受,当我尝试传递 int 时,它给我一个错误,说句柄无效。

有没有办法可以用我拥有的整数创建一个 pyHandle 对象?

4

1 回答 1

1

我对 Python 或 pyHandles 知之甚少,但根据您的描述,听起来 pyHandle 是 Win32 HANDLE 的薄包装器,在这种情况下是 Pipe 对象的 HANDLE。

Windows 中的 HANDLE 是通过调用各种 Win32 API 函数(包括 CreatePipe)从操作系统获得的。大多数 HANDLE 具有进程关联性,因此只能由获取它们的进程使用。

在 Win32 中,如果您有一个对象的句柄,并且想将该对象的引用传递给另一个进程,则必须显式调用 API DuplicateHandle以请求操作系统给您一个句柄,该句柄将在另一个进程中工作.

因此,如果您可以找到一种方法来DuplicateHandle使用原始 pyHandle 中的数值进行调用,您应该能够将其转换为可以在其他进程中使用的不同句柄值。

于 2012-07-17T09:06:17.127 回答