On Wed, May 6, 2015 at 9:58 AM, Nicolai Hess <nicolaih...@web.de> wrote:
> > > 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? > hardware lock. > > > >> >> >> >> 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 >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >>> >>> >>> >>> >>> >> >