DECLARE SHORT GetVolumeInformation IN Win32api; STRING @lpRootPathName, STRING lpVolumeNameBuffer,; INTEGER nVolumeNameSize, INTEGER @lpVolumeSerialNumber,; INTEGER @lpMaximumComponentLength, INTEGER @lpFileSystemFlags,; STRING @lpFileSystemNameBuffer, INTEGER nFileSystemNameSize lnbuflen = 260 STORE SPACE(lnbuflen) TO lcvolname, lcsysname STORE 0 TO STORE 0 TO lncomp, lnfilesys, lnserial lcroot = 'C:\' llresult = (GetVolumeInformation(@lcroot, lcvolname, lnbuflen,; @lnserial, @lncomp, @lnfilesys, @lcsysname, lnbuflen) # 0) && returns .T. ? EMPTY(lcvolname) && Returns .T. STORE SPACE(lnbuflen) TO lcvolname, lcsysname STORE 0 TO STORE 0 TO lncomp, lnfilesys, lnserial DECLARE SHORT GetVolumeInformation IN Win32api; STRING @lpRootPathName, STRING @lpVolumeNameBuffer,; INTEGER nVolumeNameSize, INTEGER @lpVolumeSerialNumber,; INTEGER @lpMaximumComponentLength, INTEGER @lpFileSystemFlags,; STRING @lpFileSystemNameBuffer, INTEGER nFileSystemNameSize llresult = (GetVolumeInformation(@lcroot, @lcvolname, lnbuflen,; @lnserial, @lncomp, @lnfilesys, @lcsysname, lnbuflen) # 0) && returns .T. ? EMPTY(lcvolname) && Returns .F.What I did note was that if I didn't declare it as being passed by reference, but passed it as such, it did work. However, this is one of those cases where you have to explicitly pass the string by reference.