40 bytes -- that can be quite possible. Very often structures are used in both directions: for input and for output. Your external function can use extra buffer part to return some data.
Eight WORDS in SYSTEMTIME structure occupy exactly 16 bytes. Though if you allocate more space in a string buffer, in 99.99% cases it will make no harm. Give'em even 512 bytes, what's a deal :)
Check a code sample: System and Local Time values
at
http://www.news2news.com/vfp/?example=64&function=95On this site you can find how to use much more complex structures.
* * *
If you provide more details on your external function and structures I probably can be more helpful.