It looks like you can find the information you need in Win32::FileOp to do the pack correctly, but it looks like the module hasn't been updated yet to include Win 2000 support. If you're calling the GetSaveFileName in Win 2000, the OPENFILENAME has three additional items you need to pack. They are:
#if (_WIN32_WINNT >= 0x0500)
void * pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
For more information, see the
MSDN page on OPENFILENAMEUpdate: I guess it would be nice if I explained the Win 2000 options, instead of making everyone go to the MSDN site.
Both pvReserved and dwReserved are reserved and should be ignored in the return. FlagsEx can be set to the value OFN_EX_NOPLACESBAR, which means don't display the places bar (whatever that means, I'm still on NT4).
GuildensternNegaterd character class uber alles!