2015-05-06 9:53 GMT+02:00 Usman Bhatti <usman.bha...@gmail.com>: > > > On Tue, May 5, 2015 at 7:34 PM, p...@highoctane.be <p...@highoctane.be> > wrote: > >> >> On Tue, May 5, 2015 at 6:28 PM, Usman Bhatti <usman.bha...@gmail.com> >> wrote: >> >>> I succeeded to do it by encapsulating the C routine as a DLL and doing >>> an FFI call from my image (as suggested by Guille). >>> >> >> At least there was a way! >> > > Exactly :) > > >> >> Looks like this is the most controlled|debuggable way: >> - get it working with C code out of Pharo >> - make a bridge that can be used easily with FFI in a dll >> - use that from Pharo with proven FFI >> >> Would NativeBoost work with your dll? Should. >> > > I have read a few resources about Nativeboost but I am still naive to know > the difference between FFI and nativeboost. The FFI call I made to invoke > the DLL function looked similar to the nativeboost calls. > > >> >> >> I also tried to perform the nativeboost call by creating my structures in >>> Pharo. The function in Windows that can be used to retrieve mac address in >>> Windows: GetAdaptersInfo >>> <https://msdn.microsoft.com/en-us/library/windows/desktop/aa365917%28v=vs.85%29.aspx> >>> that >>> accepts a PIP_ADAPTER_INFO >>> <https://msdn.microsoft.com/en-us/library/windows/desktop/aa366062(v=vs.85).aspx> >>> structure. >>> I subclassed NBExternalStructure to define this struct and the other used >>> by it in the image but my NB call returned with 87 code (Invalid parameter) >>> and it was impossible to debug. However, I would like to make this thing >>> work to understand what went wrong. >>> >> >> Has this something to do with 32|64 bit library complications? >> > > Not exactly. For me, it was more related to the fact that I had to map a > complex C struct in Pharo. Here is an excerpt of the definition from MSDN: > > typedef struct _IP_ADAPTER_INFO { > struct _IP_ADAPTER_INFO *Next; > ... > PIP_ADDR_STRING CurrentIpAddress; > IP_ADDR_STRING GatewayList; > ... > } > > So, I had to define three external structures (all names in capitals) and > I did the effort but in the end I got an error code that I could not debug > in the image. Hence, I gave up and opted to go in the native environment. > But I would like someone knowledgable to have a look at my nativeboost code > because the nativeboost approach is more simple (everything's in the > image). >
I can have a look. btw. for what do you need the mac address? > > > > usman > > >> >> Phil >> >>> >>> With ProcessWrapper, I could not load the classes essential for making >>> the plugin work. >>> >>> HTH, >>> >>> Usman >>> >>> >>> >>> >>> On Mon, May 4, 2015 at 2:54 PM, Ben Coman <b...@openinworld.com> wrote: >>> >>>> As a complete newb to VM building I found this fairly straight forward >>>> (on a Mac btw). >>>> https://github.com/pharo-project/pharo-vm >>>> cheers -ben >>>> >>>> On Mon, May 4, 2015 at 5:28 PM, Usman Bhatti <usman.bha...@gmail.com> >>>> wrote: >>>> >>>>> >>>>> >>>>> On Sun, May 3, 2015 at 4:22 PM, Pierce Ng <pie...@samadhiweb.com> >>>>> wrote: >>>>> >>>>>> On Sat, May 02, 2015 at 03:55:47PM +0200, Usman Bhatti wrote: >>>>>> > 1/ OSProcess: I tried (PipeableOSProcess command: 'ipconfig /all') >>>>>> output. >>>>>> >>>>>> I have used http://www.smalltalkhub.com/#!/~hernan/ProcessWrapper >>>>>> successfully >>>>>> back when I was on Windows using some now-ancient version of Pharo. >>>>>> >>>>> >>>>> I had initially discarded the idea of using this project because it >>>>> required a plugin and the information of the plugin was outdated on >>>>> squeaksource. However, having evaluated superficially the complexity of >>>>> doing it with nativeboost (because too many external c struct involved in >>>>> the call), I would like to see if I am better off using this wrapper. >>>>> >>>>> I loaded it with: >>>>> >>>>> Gofer it >>>>> url: 'http://www.smalltalkhub.com/mc/hernan/ProcessWrapper/main'; >>>>> package: 'ProcessWrapper-Core'; >>>>> package: 'ProcessWrapper-Plugin'; >>>>> package: 'ProcessWrapper-Tests'; >>>>> load. >>>>> >>>>> But the plugins wont load because it requires the >>>>> class SmartSyntaxInterpreterPlugin and apparently this file is a part of >>>>> the VMMaker. Is there any recent config for VMMaker in Pharo because this >>>>> one looks outdated: >>>>> >>>>> http://pharo.gemtalksystems.com/book/Virtual-Machine/Building/VMMakerTool/ >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>> >>>>>> Pierce >>>>>> >>>>>> >>>>> >>>> >>> >> >> >> >> >> >> >