Basic Univers
Procedure.s GetDrive(ListDriveType.l)
#REMOVABLE_DRIVE = 1
#FIXED_DRIVE = 2
#REMOTE_DRIVE = 4
#CDROM_DRIVE = 8
#RAMDISK_DRIVE = 16
#UNKNOWN_DRIVE = 32
#ALL_DRIVE = 63
Structure DriveInfos
DriveLetter.s
DriveType.l
DriveTypeString.s
NameOfVolume.s
EndStructure
NewList DriveList.DriveInfos()
Drive.l = GetLogicalDrives_()
ListDriveLetter.s = "" : Bit.l = 1 : NumberOfDrive = - 1 : ClearList(DriveList())
For n = 1 To 26
If(Drive & Bit) <> 0
DriveLetter.s = Chr(64 + n)
DriveType.l = GetDriveType_(DriveLetter + ":\")
Select DriveType
Case #DRIVE_REMOVABLE : DriveType = #REMOVABLE_DRIVE : DriveTypeString.s = "Disquette"
Case #DRIVE_FIXED : DriveType = #FIXED_DRIVE : DriveTypeString.s = "Disque dur"
Case #DRIVE_REMOTE : DriveType = #REMOTE_DRIVE : DriveTypeString.s = "Lecteur réseau"
Case #DRIVE_CDROM : DriveType = #CDROM_DRIVE : DriveTypeString.s = "CD-ROM"
Case #DRIVE_RAMDISK : DriveType = #RAMDISK_DRIVE : DriveTypeString.s = "RamDisk"
Case #DRIVE_UNKNOWN : DriveType = #UNKNOWN_DRIVE : DriveTypeString.s = ""
EndSelect
If DriveType = DriveType & ListDriveType
AddElement(DriveList())
DriveList()\DriveLetter = DriveLetter
DriveList()\DriveType = DriveType
DriveList()\DriveTypeString = DriveTypeString
If DriveType <> #REMOVABLE_DRIVE
lpFileSystemNameBuffer.s = Space(255)
DriveList()\NameOfVolume = ""
GetVolumeInformation_(DriveLetter + ":\", DriveList()\NameOfVolume, 255, 0, 0, 0, lpFileSystemNameBuffer, 255)
Else
DriveList()\NameOfVolume = ""
EndIf
EndIf
EndIf
Bit = Bit * 2
Next
EndProcedure
Debug "Lecteur de disquette et CD-ROM"
GetDrive(#REMOVABLE_DRIVE | #CDROM_DRIVE)
ResetList(DriveList())
While NextElement(DriveList())
Debug DriveList()\DriveLetter + " / " + DriveList()\DriveTypeString + " / " + DriveList()\NameOfVolume
Wend
Debug "Disque dur"
GetDrive(#FIXED_DRIVE)
ResetList(DriveList())
While NextElement(DriveList())
Debug DriveList()\DriveLetter + " / " + DriveList()\DriveTypeString + " / " + DriveList()\NameOfVolume
Wend
End