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