I have been given a DLL (\"InfoLookup.dll\") that internally allocates structures and returns pointers to them from a lookup function. The structures contain string pointer
For an example, see this netapi32.NetShareAdd interop declaration. It includes a SHARE_INFO_502 structure, with a public string shi502_netname member. Many more examples are available at Pinvoke.net.