用于win32pipe.PeekNamedPipe的pyHandle对象(pyHandle,bufsize)

时间:2012-07-13 15:30:17

标签: python winapi named-pipes pywin32

win32pipe.PeekNamedPipe获取参数pyHandle(读取句柄)和buf大小。 pyHandles由win32pipe.createPipe()返回,它为管道提供了一个读写句柄。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

在Win32中,如果你有一个对象的HANDLE,并且想要将对该对象的引用传递给另一个进程,你必须显式调用API DuplicateHandle来要求操作系统给你一个句柄这将在另一个过程中起作用。

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