From: daz Date: 2005-09-30T14:36:45+09:00 Subject: Re: Win32API question PWR wrote: > I am trying to use Ruby's Win32API interface to access the windows file > i/o in order to make a serial port connection. However the code below > gives the error '[BUG] Segmentation fault' when GetOverlappedResult() > is called. Any ideas would be gratefully received. Yeh; what Wayne and Greg said. Here are my changes: > ReadFile = Win32API.new("Kernel32","ReadFile","LPLLP","N") ReadFile = Win32API.new('Kernel32','ReadFile','LPLPP','I') > WriteFile = Win32API.new("Kernel32","WriteFile","LPLLP","N") WriteFile = Win32API.new('Kernel32','WriteFile','LPLPP','I') > GetOverlappedResult = Win32API.new("Kernel32","GetOverlappedResult", "LPLL", "L") GetOverlappedResult = Win32API.new('Kernel32','GetOverlappedResult', 'LPPI', 'I') > numwritten = 0 numwritten = "\0"*4 > # Write to com port > WriteFile.Call(hFile,outbuff,outbuff.size,numwritten,overlapped_write);report #-> reports ... [997, "Overlapped I/O operation is in progress. "] #-> ... but continues ... (nothing attached to COM1) daz -- > GetLastError = Win32API.new("Kernel32", "GetLastError", "V", "N") #-> ... com1_serial.rb: 18: warning: unknown type 'V' GetLastError = Win32API.new('Kernel32', 'GetLastError', '', 'L')