Problem mit GetDiskFreeSpaceEx
- 
					
					
					
					
 Hi  
 Ich möchte per GetDiskFreeSpaceEx die Partitionsgrösse meiner C: Platte auslesen.ULARGE_INTEGER m_UserBytes; ULARGE_INTEGER m_TotalBytes; ULARGE_INTEGER m_FreeBytes; CString buffer; GetDiskFreeSpaceEx("C:", &m_UserBytes, &m_TotalBytes, &m_FreeBytes ); buffer.Format("%p", m_TotalBytes);soweit sogut, nun hab ich jedoch das Problem, das die funktion 
 falsche werte liefert. Kann mir da bitte einer weiterhelfen?Grüsse alucard 
 
- 
					
					
					
					
 Kein MFC. 
 Verschoben!
 
- 
					
					
					
					
 huch ^^ 
 sorry soll nicht wieder vorkommen 
 Hoffe mal hier werde ich geholfen
 
- 
					
					
					
					
 [cpp] 
 Drive = GetDriveType( str ); // Laufwerk-Typ abfragen
 if( Drive == 3) // 3 entspricht Festplatte
 {
 GetDiskFreeSpaceEx( str, &FreeBytes, &TotalBytes, NULL );if( FreeBytes.QuadPart /(10241024) >= limit ) 
 {
 LaufwerkIsTrue[zaehler] = TRUE;
 LaufwerkFreierSpeicher[zaehler] = (UINT) (FreeBytes.QuadPart /(10241024));
 }
 [/cpp]
 
- 
					
					
					
					
 GetDiskFreeSpaceEx(m_drivesData, NULL, NULL, (union _ULARGE_INTEGER*)&freeBytes);<--- damit funzt es bei mir einwandfrei m_drivesData enthält das Laufwerk bei mir <--- HALT!!  ich seh grad, dass die funktion bei mir genau die hälfte des freien speicherplatzes liefert .. *grml* ich seh grad, dass die funktion bei mir genau die hälfte des freien speicherplatzes liefert .. *grml*kann mir vielleicht jemand verraten warum? [ Dieser Beitrag wurde am 07.06.2002 um 11:03 Uhr von Nova editiert. ] 
 
- 
					
					
					
					
 weiß da jemand was?  
 
- 
					
					
					
					
 Hier vielleicht auch mal ein Beispiel-Code für die FAQ für die Verwendung von FreeDiskSpaceEx, hab den Code allerdings nicht in ne WinMain gepackt, dürfte aber kein Problem sein, oder ?  : :#include <windows.h> #include <stdio.h> #include <iostream.h> void Festplattengroesse_Ermitteln (void); int main () { Festplattengroesse_Ermitteln(); return 0; } void Festplattengroesse_Ermitteln (void) { typedef BOOL (WINAPI * PGetDiskFreeSpaceExA)(LPCTSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER); // Adressspeicher BOOL gdresult=FALSE; PGetDiskFreeSpaceExA pget=NULL; char szbuffer[104]="",szlaufwerke[26][10],szhdfrei[20]=""; int n=0,ianzahl=0; unsigned __int64 i64userfrei=0,i64total=0,i64totalfrei=0; ianzahl=GetLogicalDriveStrings(104,szbuffer); // Gesamtzanzahl der logischen Laufwerke in Zeichen durch '\0' getrennt ("A:\\\0","B:\\\0" usw.) pget=(PGetDiskFreeSpaceExA)GetProcAddress(GetModuleHandle("kernel32.dll"),"GetDiskFreeSpaceExA"); // aus der Kernel32.dll die Funktion GetDiskFreeSpaceEx laden, falls sie noch nicht geladen wurde if(pget!=NULL) { for(n=0;n<(ianzahl/4);n++) // ianzahl/4 = Laufwerke insgesamt, laufwerk aus jeweils "A:\\\0" 4 Zeichen besteht { sprintf(szlaufwerke[n],"%s",&szbuffer[n*4]); if(GetDriveType(szlaufwerke[n])==3) // Wenn Typ == 3 (Festplatte) { gdresult=pget(szlaufwerke[n],(PULARGE_INTEGER)&i64userfrei,(PULARGE_INTEGER)&i64total,(PULARGE_INTEGER)&i64totalfrei); // Ermittelt des Speichers in einen 64bit Integer if(gdresult==TRUE) { _ui64toa(i64userfrei/(1024*1024),szhdfrei,10); // wichtigste Speichergroesse in char* konvertieren, vorher von Byte nach Megabyte umrechnen (1024*1024) cout<<"Auf Laufwerk "<<szlaufwerke[n]<<" sind "<<szhdfrei<<" MB verfuegbar !"<<endl; } else cout<<"Fehler kein Zugriff auf Festplatte moeglich !"<<endl; } } } else cout<<"Funktion GetDiskFreeSpaceEx nicht verfuegbar !"<<endl; }Funktioniert 100% ! [ Dieser Beitrag wurde am 18.12.2002 um 19:13 Uhr von BiGFusel editiert. ]