function GetVolInfo lparameters lcRoot, taInfo && Root of drive ie: "c:\", InfoArray passed by ref DECLARE SHORT GetVolumeInformation IN Win32API; STRING @lpRootPathName, STRING @lpVolumeNameBuffer,; INTEGER nVolumeNameSize, INTEGER @lpVolumeSerialNumber,; INTEGER @lpMaximumComponentLength, INTEGER @lpFileSystemFlags,; STRING @lpFileSystemNameBuffer, INTEGER nFileSystemNameSize STORE 0 TO lnserialno, lncomplen, lnsysflags STORE SPACE(260) TO lcvolname, lcsysname STORE LEN(lcvolname) TO lnvolsize, lnnamesize if (GetVolumeInformation(@lcroot, @lcvolname,; lnvolsize, @lnserialno, @lncomplen, @lnsysflags,; @lcsysname, lnnamesize) # 0) dimension taInfo[3] taInfo[1] = substr(lcVolName, 1, at(chr(0),lcVolName)-1) && Volume name taInfo[2] = substr(lcSysName, 1, at(chr(0),lcSysName)-1) && System taInfo[3] = dec2hex(lnSerialNo) && Serial in hex format else taInfo = "" endif return function dec2hex PARAMETER nDecimal, nDigits ** Converts from base 10 to base 16. Returns Hex notation in a string whose length ** is always a multiple of 2, unless the nDigits parameter is specified to pad the ** string with zeroes. cHex = "" DO WHILE nDecimal >= 16 cHex = hexdigit(nDecimal % 16) + cHex nDecimal = int(nDecimal/16) ENDDO cHex = hexdigit(nDecimal) + cHex RETURN PADL(cHex, ; iif( PARAMETERS() < 2, ; ceiling(len(cHex)/2)*2, nDigits ), "0") function hexdigit parameters nDecimal return iif(ndecimal>9,chr(asc("A")+nDecimal%10),str(nDecimal,1))Cetin