Zum Inhalt springen

Freier Speicherplatz


InsanityX

Empfohlene Beiträge

Hi,

ich habe ein Problem, und zwar muss ich für ein Tool herausfinden, wieviel Festplattenplatz verfügbar ist. Und zwar muss das Programm auf allen Win-Plattformen (Win95-WIn2000) laufen. Ich habe den Befehl GetDiskFreeSpaceEx gefunden, aber dieser liefert mir meiner Meinung nach Phantasie-Ergebnisse. Vielleicht bin ich auch zu blöd ;), diesen Befehl zu verstehen. Anbei mein Sourcecode. Ich will das Ergebniss des leeren Speichers in einen Array schreiben. Wäre nett, wenn mir wer helfen kann

Source:

  

int drive, i, nFreespace;

static char path[_MAX_PATH];

CString sLaufwerksbuchstabe, sFreespace;

char *lpStrLaufw ;


_ULARGE_INTEGER lpFreeBytesAvailable; 

_ULARGE_INTEGER lpTotalNumberOfBytes;

_ULARGE_INTEGER lpTotalNumberOfFreeBytes; 	    

int *i64FreeBytesToCaller, int *i64TotalBytes, i64FreeBytes;

int MB=1024*1024;

i=0;

lpStrLaufw="C:\\" ;


/* Schreiben der Laufwerksbuchstaben in einen Array */

for( drive = 1; drive <= 26; drive++ )

if( !_chdrive( drive ) )

{

i++;

/*sLaufwerksbuchstabe.Format( "%c:\\", drive + 'a' - 1 );

GetDiskFreeSpaceEx(sLaufwerksbuchstabe, &lpFreeBytesAvailable, &lpTotalNumberOfBytes, &lpTotalNumberOfFreeBytes);

sa_DriveLetter[i].Add(sLaufwerksbuchstabe);

sFreespace.Format("%d MB %d MB %d", &lpTotalNumberOfFreeBytes,&lpFreeBytesAvailable, &lpTotalNumberOfBytes);

//sa_Freespace[i].Add(sFreespace);*/


int fResult = GetDiskFreeSpaceEx (lpStrLaufw,

                (PULARGE_INTEGER)&i64FreeBytesToCaller,

                (PULARGE_INTEGER)&i64TotalBytes,

                (PULARGE_INTEGER)&i64FreeBytes);



 sFreespace.Format("%d MB %d MB %d", &i64FreeBytesToCaller, &i64TotalBytes, &i64FreeBytes);


Ben

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die letzte Zeile deines Quellcodes ist falsch:

sFreespace.Format("%d MB %d MB %d", &i64FreeBytesToCaller, &i64TotalBytes, &i64FreeBytes);

Die Formatangabe %d muss zu %I64d erweitert werden,

außerdem musst du Variablen selbst an Format() übergeben,

und nicht ihre Addresse. Kurz gesagt:

sFreespace.Format("%I64d Bytes %I64d Bytes %I64d Bytes", i64FreeBytesToCaller, i64TotalBytes, i64FreeBytes);

Das sollte funtionieren, anbei noch ein Quellcode:

int drive;

char szDrive[4];

char szBuffer[200];

ULARGE_INTEGER FreeBytesAvailable, TotalNumberOfBytes, TotalNumberOfFreeBytes;

for( drive = 1; drive <= 26; drive++ )

{

if( !_chdrive( drive ) )

{

sprintf(szDrive, "%c:\\", drive + 'a' - 1 );

GetDiskFreeSpaceEx(szDrive, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes);

TotalNumberOfFreeBytes.QuadPart = Int64ShraMod32(TotalNumberOfFreeBytes.QuadPart, 20);

TotalNumberOfBytes.QuadPart = Int64ShraMod32(TotalNumberOfBytes.QuadPart, 20);

FreeBytesAvailable.QuadPart = Int64ShraMod32(FreeBytesAvailable.QuadPart, 20);

sprintf(szBuffer, "%I64d MB free to caller, %I64d MB total free, %I64d MB total", TotalNumberOfFreeBytes.QuadPart, FreeBytesAvailable.QuadPart, TotalNumberOfBytes.QuadPart);

}

}

Ich hoffe, dass das dir hilfe,

bis denn dann, :) MadMatrix

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...