Article ID: 193623
Article Last Modified on 6/30/2004
* This program enumerates all drives on a Win32 system and
* displays a message box containing the drive letters and
* types of all logical drives on the system.
*
* Constants for drive types.
#DEFINE DRIVE_UNKNOWN 0
#DEFINE DRIVE_NO_ROOT_DIR 1
#DEFINE DRIVE_REMOVABLE 2
#DEFINE DRIVE_FIXED 3
#DEFINE DRIVE_REMOTE 4
#DEFINE DRIVE_CDROM 5
#DEFINE DRIVE_RAMDISK 6
#DEFINE CR CHR(13)
DECLARE INTEGER GetLogicalDrives IN Win32API
DECLARE INTEGER GetDriveType IN Win32API STRING RootPath
PRIVATE lcDrivestring, lcDriveRoot, liDrivelist, lcDrives, i
lcDrives = ""
* GetLogicalDrives returns a 32-bit value containing a list of
* available drives. If the specific bit is ON, the drive letter
* corresponding to that position exists.
liDrivelist = GetLogicalDrives()
* Check each of the bits
FOR i = 0 TO 31
IF BITTEST(liDrivelist, i)
* If the 0th bit is ON, that means drive 'A:',
* the 2nd bit is 'C:", etc.
lcDriveRoot = CHR(65 + i) + ":\"
* Perform a GetDriveType to determine if it is a floppy, CD, etc.
lcDrivetype = GetDriveType(lcDriveRoot)
DO CASE
CASE lcDrivetype = DRIVE_UNKNOWN
lcDrivestring = "Cannot be determined"
CASE lcDrivetype = DRIVE_NO_ROOT_DIR
lcDrivestring = "Root directory does not exist"
CASE lcDrivetype = DRIVE_REMOVABLE
lcDrivestring = "Floppy/removable drive"
CASE lcDrivetype = DRIVE_FIXED
lcDrivestring = "Hard drive/nonremovable drive"
CASE lcDrivetype = DRIVE_REMOTE
lcDrivestring = "Remote/Network drive"
CASE lcDrivetype = DRIVE_CDROM
lcDrivestring = "CD-ROM drive"
CASE lcDrivetype = DRIVE_RAMDISK
lcDrivestring = "RAM disk"
ENDCASE
lcDrives = lcDrives + lcDriveRoot + " " + lcDrivestring + CR
ENDIF
NEXT
=MESSAGEBOX(lcDrives, ;
0 + 64 + 0)
Additional query words: kbVFp600 kbAPI
Keywords: kbhowto kbcode KB193623