S
ich habe hier eine Funktion die die Größen der Fesplatte ausliest. -->
double CEraserDlg::GetDiskFreeSpaceBytes(LPCTSTR szDrive)
{
double dRet;
double m_mb;
BOOL (WINAPI *pGetDiskFreeSpaceEx)(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER);
#ifdef _UNICODE
pGetDiskFreeSpaceEx = (BOOL (WINAPI *)(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER))
GetProcAddress( GetModuleHandle("kernel32.dll"), "GetDiskFreeSpaceExW");
#else
pGetDiskFreeSpaceEx = (BOOL (WINAPI *)(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER))
GetProcAddress( GetModuleHandle("kernel32.dll"), "GetDiskFreeSpaceExA");
#endif
if (pGetDiskFreeSpaceEx)
{
ULARGE_INTEGER i64FreeBytesToCaller; // bytes available to caller
ULARGE_INTEGER i64TotalBytes; // bytes on disk
ULARGE_INTEGER i64FreeBytes;
if (!pGetDiskFreeSpaceEx(szDrive, &i64FreeBytesToCaller, &i64TotalBytes, &i64FreeBytes))
return -1.0;
dRet = (double)(signed __int64)i64FreeBytes.QuadPart;
}
else
{
DWORD dwSectPerClust;
DWORD dwBytesPerSect;
DWORD dwFreeClusters;
DWORD dwTotalClusters;
if (!GetDiskFreeSpace (szDrive, &dwSectPerClust, &dwBytesPerSect, &dwFreeClusters, &dwTotalClusters))
return -1.0;
dRet = dwFreeClusters * dwSectPerClust * dwBytesPerSect;
}
return dRet;
}
Nur ich bekomme hier für den Wert dRet eine Zahl heraus die nicht mit meinem freien Speicherplatz übereinstimmt.
Und auf eine Prozentanzeige kann ich die ULARGE_INTEGER auch nicht umrechnen, dass ich sehe wieviele % auf der Festplatte noch frei sind.
Wie könnte das funktionieren?
Danke