Voglio creare una pipe anonima su Windows utilizzando lo CreatePipe
di WinAPI tramite la FFI. Questo mi darà un HANDLE
(tipo dal pacchetto haskell Win32
), ma mi piacerebbe avere un ordinario haskell Handle
tale da poter utilizzare le funzioni standard dell'hash di haskell su di esso. Quindi ho bisogno di una funzione di tipo:Converti MANIGLIA per gestire
win32handleToStandardHandle :: HANDLE -> IO Handle
Come posso implementarlo?
Su linux, posso usare la funzione System.Posix.IO
fdToHandle
per convertire tra il tipo FD
utilizzato dalle chiamate di sistema linux e il tipo standard di haskell. Ma sembra che non ci sia una tale funzione per Windows.
Sembra che "HANDLE" sia solo un sinonimo di tipo: 'type HANDLE = Ptr()'. Non ho idea di come rispondere alla tua domanda ma questo non dà una funzione di conversione molto per lavorare con ...: \ –
Posso vedere che 'HANDLE' è definito come' type HANDLE = Ptr() ', mentre' Handle 'è un tipo di dati algebrico che rappresenta un singolo handle o un handle duplex per RW, che a sua volta è implementato da una struttura di record complessa. Ci sono molte funzioni per ottenere informazioni su un 'HANDLE' dall'API' Win32'? Avrai bisogno di cose come la modalità di buffering, il buffer di char corrente, la codifica del testo, ecc. Potrebbe essere possibile scriverlo da solo, ma immagino che potrebbe essere un po 'noioso per essere corretto. – bheklilr