Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période.
Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.

~ Rechercher ~

  

~ Annuaire VB ~
 Rechercher un site :
  

~ Partenaires ~

Fonction GetDiskFreeSpace

Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" ( _
                 
ByVal lpRootPathName As String, _
                 lpSectorsPerCluster As Long, _
                 lpBytesPerSector As Long, _
                 lpNumberOfFreeClusters As Long, _
                 lpTotalNumberOfClusters As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction permet de connaître l'espace total d'un lecteur ainsi que l'espace libre restant.
lpRootPathName est le lecteur à examiner (sous la forme X:\).
lpSectorsPerCluster (remplit par la fonction) indique le nombre de secteurs par cluster.
lpBytesPerSector (remplit par la fonction) indique le nombre d'octets par secteur.
lpNumberOfFreeClusters (remplit par la fonction) donne le nombre de clusters vides.
lpTotalNumberOfClusters (remplit par la fonction) correspond au nombre total de clusters.

Avec de simples calculs, il est alors possible de connaître l'espace libre et total du lecteur (conversion en type "Double" pour éviter les dépassements de capacité sur les grands lecteurs) :
EspaceTotal = CDbl(lpSectorsPerCluster) * CDbl(lpBytesPerSector) * CDbl(lpTotalNumberOfClusters)
EspaceLibre = CDbl(lpSectorsPerCluster) * CDbl(lpBytesPerSector) * CDbl(lpNumberOfFreeClusters)

La fonction retourne Vrai si elle a réussi, sinon Faux.

Exemple d'utilisation :

' LEMONTVERT (hulya.m@caramail.com)

Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" _
         (
ByVal lpRootPathName As String, lpSectorsPerCluster As Long, _
        lpBytesPerSector
As Long, lpNumberOfFreeClusters As Long, _
        lpTtoalNumberOfClusters
As Long) As Long

'*********************************************************************
'** TestSpaceDisk
'** Permet de calculer l'espace les infos concernant l'espace libre,
'** occupé et total du disque
'** ENTREE : Disque --> Récupère le disque dont on cherche les infos
'** SORTIE : TailleLibre et TailleTotale
'** RENVOIE : un numéro d'erreur 0--> No error
'*********************************************************************

Public Function TestSpaceDisk(Disque As String, TailleLibre As Single, _
                TailleTotale
As Single) As Integer
Dim
Secteurs As Long
Dim
Bytes As Long
Dim
ClustersLibres As Long
Dim
NombreDeClusters As Long
Dim
RetVal As Long
Dim
Mem As Single

On Error GoTo
ERR_TestSpaceDisk
'*** Récupère les infos concernant l'espace libre / occupe / total du Disque
' GetDiskFreeSpace renvoie plusieurs informations (dans l'ordre):
' nombre de groupes libres
' nombre de secteurs par groupe
' nombre d'octets par secteur
RetVal = GetDiskFreeSpace(Disque, Secteurs, Bytes, ClustersLibres, NombreDeClusters)

'Il suffit de multiplier les trois pour avoir le nombre d'octets libres sur le disque dur
Mem = ClustersLibres / 1024
TailleLibre = Bytes * Secteurs * Mem
Mem = NombreDeClusters / 1024
TailleTotale = Bytes * Secteurs * Mem
Exit Function

ERR_TestSpaceDisk:
Ecrire_Dans_Fichier_Log App.Path & "\SurvDisk.log", _
        "Le calcul des infos disques a produit l'erreur suivante :" & _
        vbCrLf & Err.Number & vbCrLf & Err.Description

TestSpaceDisk = Err.Number
End Function

Retour à la liste des API

Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr