Festplattengröße anzeigen?!?!?



  • 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 😕


Anmelden zum Antworten