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、この場合はパイプオブジェクトへのHANDLEの薄いラッパーであるかのように聞こえます。

Windows の HANDLE は、CreatePipe を含むさまざまな Win32 API 関数を呼び出した結果として、オペレーティング システムから取得されます。ほとんどの HANDLE はプロセス アフィニティを持っているため、それらを取得したプロセスでのみ使用できます。

Win32 では、オブジェクトへのハンドルがあり、そのオブジェクトへの参照を別のプロセスに渡したい場合は、API DuplicateHandleを明示的に呼び出して、オペレーティング システムに他のプロセスで機能するハンドルを提供するように要求する必要があります。 .

したがって、元の pyHandle の数値を使用して呼び出す方法を見つけることができればDuplicateHandle、それを他のプロセスで使用できる別のハンドル値に変換できるはずです。

于 2012-07-17T09:06:17.127 に答える