Hi Mankan, From: "Beginner" <smankan / ueidaq.com> > > You are right, I would like to change the parameter content by passing > them as pointer(or reference) and I would like to see their values in > ruby so that based on that value I will be running a for loop. > > Like if ruby returns dwtest=3, then next step will be to run a for loop > for 3 times. [...] > require 'Win32API' > dwtest = "" * 8 > shell1=Win32API.new("my.dll", "myfunc",['P','P','P'],'L') > > myfunc takes 3 parameters, &dwerror, &dwnum, &dwtest. Return value is 0 > or 1. > > I would like to print or test "&dwtest" which is the 3rd parameter, but > > I don't know what mistake am I doing, it never prints the right value. > I even did "unpack" using dwtest.unpack('L'). How about this: shell1 = Win32API.new("my.dll", "myfunc",['P','P','P'],'L') dwerror_ = [0].pack("l") dwnum_ = [0].pack("l") dwtest_ = [0].pack("l") result = shell1.call(dwerror_, dwnum_, dwtest_) dwerror = dwerror_.unpack("l").first dwnum = dwnum_.unpack("l").first dwtest = dwtest_.unpack("l").first Just a guess... Hope this helps, Bill