Hello, I'm looking for help with the following problem. I try to get closer from the C point of view to the problem. //These are the structures typedef struct { unsigned int NumEntries; /* number of entries written to the pModuleData array */ MODULE_DATA *pModuleData; /* pointer to array containing module infos and module handles */ } MODULE; typedef struct { unsigned int ModuleTypeId; /* ModuleTypeId */ unsigned int hMod; /* handle Module assigned */ char *pVendorModuleName; /* Vendor specific information string. */ } MODULE_DATA; //this is a function that I call via FFI unsigned int errorCheck GetModuleIds(MODULE **pModuleIdList) { //memory will be allocated here and the structure will be filled. } Now my questions :-) I solve the pointer pointer problem with ExternalAddress and MODULE fromHandle: | result pointerAutoRelease mod| pointerAutoRelease := ExternalAddress new pointerAutoRelease. result := call ffiGetModuleIds: pointerAutoRelease. "inside Methode -> ffiGetModuleIds ^self ffiCall:#(uint32 GetModuleIds( void** pModuleIdList ) )" "result is unimportant for understanding the problem" mod := MODULE fromHandle: pointerAutoRelease. Is this a good way? Or is there a better solution? And now comes my main problem... How do I get my array( or Collection) from NumEntries and *pModuleData with ffi? So I would do it roughly in C. main(){ MODULE_DATA *pModuleData; MODULE *moduleIdList=NULL; unsigned int retval = GetModuleIds(&moduleIdList); printf("Number of modules: %d\n\n",moduleIdList->NumEntries); for (unsigned int i=0;i<moduleIdList->NumEntries;i++) { // Set a pointer to the current ModuleData pModuleData = &moduleIdList->pModuleData[i]; //is like iterate through a pointer //etc. ..... ... } } Thanks you for your help. -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html