Chcę utworzyć annonymous potoku na windows przy użyciu CreatePipe
z WinAPI za pośrednictwem FFI. To da mi HANDLE
(rodzaj z pakietu haskell Win32
), ale chciałbym uzyskać zwykły haskell Handle
taki, że mogę używać standardowych funkcji IO na nim. Potrzebuję funkcji typu:Konwertuj UCHWYT do obsługi
win32handleToStandardHandle :: HANDLE -> IO Handle
Jak mogę to wdrożyć?
W systemie Linux mogę używać funkcji System.Posix.IO
' do konwersji między typem FD
używanym przez wywołania systemowe systemu Linux i standardowym typem komendy. Ale wydaje się, że nie ma takiej funkcji dla okien.
Wygląda na to, że 'HANDLE' jest po prostu synonimem typu:' type HANDLE = Ptr() '. Nie mam pojęcia, jak odpowiedzieć na twoje pytanie, ale to nie daje dużo funkcji konwersji do pracy z ...: \ –
Widzę, że 'UCHWYT" jest zdefiniowany jako 'typ HANDLE = Ptr()', natomiast 'Uchwyt 'jest algebraicznym typem danych reprezentującym jeden uchwyt lub uchwyt dupleksu dla RW, który sam jest implementowany przez złożoną strukturę rekordów. Czy istnieje wiele funkcji uzyskiwania informacji o 'UCHWYCIE' z API' Win32'? Będziesz potrzebował takich rzeczy jak tryb buforowania, bieżący bufor znaków, kodowanie tekstu, itp. Może być możliwe napisanie tego samemu, ale wyobrażam sobie, że może być nieco nudne, aby uzyskać poprawne. – bheklilr