GetDriveInfo – Drive serial number and other data

GetDriveInfo – Drive serial number and other data

Private Declare Function GetVolumeInformation& Lib "kernel32" Alias _    "GetVolumeInformationA" (ByVal lpRootPathName As String, _    ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _    lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _    lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _    ByVal nFileSystemNameSize As Long)Const MAX_PATH = 260Const FILE_CASE_SENSITIVE_SEARCH = &H1Const FILE_CASE_PRESERVED_NAMES = &H2Const FILE_UNICODE_ON_DISK = &H4Const FILE_PERSISTENT_ACLS = &H8Const FILE_FILE_COMPRESSION = &H10Const FILE_VOLUME_IS_COMPRESSED = &H8000' return volume name, serial number and file system (eg "FAT") for a given drive' it fails with removable drives if the disk isn't in place' the FileSystemFlags argument is a combination of the FILE_* constats' (see MSDN for additional information)'' you can specify an UNC for the drive name ' (e.g."\MyServerMyShare as \MyServerMyShare"' Under Windows95/98 the serial number of network drives isn't returned'' Returns True if all information has been retrieved successfullyFunction GetDriveInfo(ByVal DriveName As String, Optional VolumeName As String, _    Optional SerialNumber As Long, Optional FileSystem As String, _    Optional FileSystemFlags As Long) As Boolean        Dim ignore As Long        ' if it isn't a UNC path, enforce the correct format    If InStr(DriveName, "\") = 0 Then        DriveName = Left$(DriveName, 1) & ":"    End If        ' prepare receiving buffers    SerialNumber = 0    FileSystemFlags = 0    VolumeName = String$(MAX_PATH, 0)    FileSystem = String$(MAX_PATH, 0)        ' The API function return a non-zero value if successful    GetDriveInfo = GetVolumeInformation(DriveName, VolumeName, Len(VolumeName), _        SerialNumber, ignore, FileSystemFlags, FileSystem, Len(FileSystem))    ' drop characters in excess    VolumeName = Left$(VolumeName, InStr(VolumeName, vbNullChar) - 1)    FileSystem = Left$(FileSystem, InStr(FileSystem, vbNullChar) - 1)    End Function

See also  5 Tips for Working With an Onsite Interpreter

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist