Function GetDiskSerialNumber && Retorna o Número Serial de um Drive Local (HD) *-------- ------------------- LParameters pDiskId * Chamada: Numérico: nSerialNumber = GetDiskSerialNumber ("C:\") * Em Hexa: cHexSerialNumber = Substr (Transform (nSerialNumber, "@0"), 3) Local cDiskId , ; cVolumeName , ; nVolumeNameSize , ; nVolumeSerial , ; nMaxCompLength , ; nFileSysFlag , ; cFileSysNameBuf , ; nFileSysNameSize Declare Integer GetVolumeInformation in Win32API String @lpRootPathName , ; String @lpDiskIdNameBuffer , ; Integer nVolumeNameSize , ; Integer @lpDiskIdSerialNumber , ; Integer @lpMaximumComponentLength, ; Integer @lpFileSystemFlags , ; String @lpFileSystemNameBuffer , ; Integer nFileSystemNameSize cDiskId = AllTrim (pDiskId) cVolumeName = Space (256) nVolumeNameSize = 256 nVolumeSerial = 0 nMaxCompLength = 256 nFileSysFlag = 0 cFileSysNameBuf = Space (256) nFileSysNameSize = 256 nReturn = 0 nReturn = GetVolumeInformation (@cDiskId , ; @cVolumeName , ; nVolumeNameSize , ; @nVolumeSerial , ; @nMaxCompLength , ; @nFileSysFlag , ; @cFileSysNameBuf, ; nFileSysNameSize) If nReturn >= 0 If nVolumeSerial < 0 nVolumeSerial = 4294967296 + nVolumeSerial && 2^32 = 4294967296 endif endif Return nVolumeSerial EndFunc && of GetDiskSerialNumberFernando