También tienes que tener en cuenta que la función GetDiskFreeSpaceExA requiere W95 OSR2, WNT 4.0, o una versión superior de cualquiera de ellos. Si quieres asegurar la compatibilidad con las versiones anteriores, debes utilizar la función GetDiskFreeSpaceA, que es parecida a GetDiskFreeSpaceExA, pero tienes que realizar cálculos.
Ejemplo:
// Declarar la función GetDiskFreeSpaceA
Function Long GetDiskFreeSpaceA (String lpRootPathName, Ref Long lpSectorsPerCluster, Ref Long lpBytesPerCluster, Ref Long lpNumberOfFreeClusters, Ref Long lpTotalNumberOfClusters) library "Kernel32.dll"
// Después, en tu script, debes poner el siguiente código (lo puedes adaptar a tus necesidades):
unsignedlong lul_SectoresClust, lul_bytesSector, lul_Clust_libres, lul_Total_Clust, lul_esp_Total, lul_esp_libre
long ll_ret
// Llamar a la función GetDiskFreeSpaceA
ll_ret = GetDiskFreeSpaceA ("C:\", lul_SectoresClust, lul_bytesSector, lul_Clust_libres, lul_Total_Clust)
// Comprobar errores
if ll_ret = 0 then
MessageBox ("Error", "Error al acceder al disco.")
return -1
End if
// Cálculos para obtener el espacio libre y la capacidad total del disco:
// Espacio libre = (Bytes por sector) * (Sectores por cluster) * (Nº de clusters libres)
lul_esp_libre = lul_bytesSector * lul_SectoresClust * lul_Clust_libres
// Espacio total = (Bytes por sector) * (Sectores por cluster) * (Nº total de clusters)
lul_esp_Total = lul_bytesSector * lul_SectoresClust * lul_Total_Clust