~ 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 ~
~ 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 : OuiDescription : 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 |