Hola amigos estoy usando la APi GetDiskFreeSpaceEx para calcular los espacios de los discos.
Bueno cuando recibo el tamaño de bytes de un label, comparando fisicamente con la particiion (ejm D:) es la misma , ahora mi problema creo q es en la logica, o en los tipo de dato q aplico para convertir esos datos En GB. (redondeados a 2 decimales), acontinuacion pondre el codigo (resumido de lo que uso)
'Api
Private Declare Function GetDiskFreeSpaceEx Lib "Kernel32" Alias "GetDiskFreeSpaceExA" (ByVal RootPathName As String, ByRef lpFreeBaytesAvailableToCaller As [b]Long,[/b] ByRef lpTotalNumberofBytes As [b]Long[/b], ByRef lpTotalNumberofFreeBytes As [b]Long[/b]) As Integer
Private Sub MostrarDatos()
Dim Disco As String
Dim Capacidad As Single
Dim Libre As Long
Dim PorcentajeUsado As Long
Dim PorcentajeLibre As Long
Dim retorno As Integer
...
retorno = GetDiskFreeSpaceEx(Disco, Libre, Capacidad, Libre)
Capacidad = Capacidad / 10000
Libre = Libre / 10000
'MessageBox.Show(Libre)
Capacidad = Capacidad * 10000 / 1000000
Libre = Libre * 10000 / 1000000
Label1.Text = String.Format(Capacidad, "0. 00") & "Megabytes"
GB1_label.Text = Math.Round(Capacidad / 1024, 2) & " GB"
Label2.Text = String.Format(Capacidad - Libre, "0.00") & " MegaBytes Usados"
GB2_label.Text = Math.Round(Capacidad - Libre, 2)
Label3.Text = String.Format(Libre, "0.00") & " MegaBytes Libres"
PorcentajeLibre = Libre * 100 / Capacidad
Label4.Text = String.Format(PorcentajeLibre, "0.00") & " % de Bytes Libres"
PorcentajeUsado = (Capacidad - Libre) * 100 / Capacidad
Label5.Text = String.Format(PorcentajeUsado, "0.00") & " % de Bytes Utilizados"
Bueno el problema que tengo es que las equivalencias que me salen son las "reales", como pueden apreciar en la siguiente imagen: