Question 34

Comment retrouver la taille et l'espace libre d'un disque, même très grand (plus de 2 Gb) ?

L'API GetDiskFreeSpaceEx() renvoie un entier de type ULARGE_INTEGER, c'est à dire codé sur 64 bits en C... En VB, cela donne presque la même chose qu'une variable de type Currency, hormis le fait que le type Currency est codé comme un entier, mais décalé de 10000 (cf. aide de VB sur le type Currency). Bref, on peut l'utiliser comme ceci :

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency, lpTotalNumberOfFreeBytes As Currency) As Long

Private Sub Form_Load()

    Dim RC As Long
    Dim TailleUtile As Currency
    Dim TailleTotale As Currency
    Dim TailleLibre As Currency

    'Taille du disque C:
    RC = GetDiskFreeSpaceEx("C:\", TailleUtile, TailleTotale, TailleLibre)

    'Corrige le décalage de 10000 du format numérique Currency
    TailleUtile = TailleUtile * 10000
    TailleTotale = TailleTotale * 10000
    TailleLibre = TailleLibre * 10000

End Sub

Remarque : les tailles renvoyées sont en octets.

Date de publication : 07 juillet 2002
Dernière modification : 07 juillet 2002
Rubriques : Fichiers & dossiers
Mots-clés : disques, tailles, grands, espace libre