Rodd,
On several occasions I have noticed a difference between declaring a pointer in VFP as STRING @ vs. using memory allocation function -- like GlobalAlloc -- and declaring pointer input parameter as INTEGER.
Read a comment at the bottom of this page:
Reading security permissions for NTFS files and foldershttp://www.news2news.com/vfp/?example=516May be declare ppDestBuffer as INTEGER, allocate memory and pass the handle to PZ_Compress function for this parameter. It may work. Don't forget to release the allocated memory block on exit.
There's another VFP code sample that deals with something like pointers to pointers. It may give you some leads.
How to assemble an array of strings and pass it to external functionhttp://www.news2news.com/vfp/?example=487