Laufwerksinformationen ;)
-
Dieses Prog hilft euch weiter wenn ihr die funktionen
GetDiskFreeSpaceEx, GetDriveType, TotalNumberOfFreeBytes verstehen wollt .Dieses Programm sucht euch alle möglichen Informationen über die PC-Internen Laufwerke raus
z.B.: Freier-Belegter-Speicher, Laufwerkstyp, Laufwerkserweiterung, DateisystemsformatAusserdem erkennt es ob eine CD-Eingelegt ist oder nicht
#include <stdio.h> #include <iostream.h> #include <windows.h> void main() { //Freier Speicher ermitteln + (NTFS/FAT) + CD-laufwerke (einglegte -nicht eingelegte CD) //Initialisierungen char VolumeNameBuffer[256]; // address of name of the volume DWORD VolumeSerialNumber; // address of volume serial number DWORD MaximumComponentLength; // address of system's maximum filename length DWORD FileSystemFlags; // address of file system flags char FileSystemNameBuffer[256]; // address of name of file system UINT OldErrMode; OldErrMode=SetErrorMode(SEM_FAILCRITICALERRORS); // INITIALISIERUNGE FÜR GESAMMTSPEICHER + FREIER SPEICHER + Prozentausgabe char DirGESAMMT[20]; char DirFREI[20]; int DirFREIPRO; int DirPRO; ULARGE_INTEGER TotalNumberOfFreeBytes; ULARGE_INTEGER TotalNumberOfBytes; for(char drv='A';drv<='Z';++drv) //Lässtalle Laufwerksbuchstaben von A-Z durchlaufen { char adr1[500]; char adr2[500]; char adr3[500]; sprintf(adr1,"%c:\\",drv);//Laufwerksbuchstabenanpassung für die Funktionen sprintf(adr2,"%c:",drv); sprintf(adr3,"%c:\\*.*",drv); //kontlolle des freien Speichers if(GetDiskFreeSpaceEx(adr1,NULL,&TotalNumberOfBytes,&TotalNumberOfFreeBytes) == NULL) { if(::GetDriveType(adr1) == DRIVE_CDROM)//Drivetyp Herausfinden { cout<<"("<<drv<<":) CD-Laufwerk\n"; } } else { if ((int)Int64ShrlMod32(TotalNumberOfFreeBytes.QuadPart,20)>0)//wenn das laufwerk >0 bytes speichern kann { DirPRO= (int)Int64ShrlMod32(TotalNumberOfBytes.QuadPart,20)/100;//ermittlung eines Prozents des Gesammtspeichers DirFREIPRO=(int)Int64ShrlMod32(TotalNumberOfFreeBytes.QuadPart,20)/DirPRO;//Prozent freier Speicher sprintf(DirGESAMMT,"(Gesammt:) %iMB",Int64ShrlMod32(TotalNumberOfBytes.QuadPart,20));// gesammter Speicher sprintf(DirFREI,"(Frei:) %iMB",Int64ShrlMod32(TotalNumberOfFreeBytes.QuadPart,20));// freier speicher //Laufwerkstyp Ermittlung if(!GetVolumeInformation(adr2,VolumeNameBuffer,255, &VolumeSerialNumber,&MaximumComponentLength, &FileSystemFlags,FileSystemNameBuffer,255 )) { if(::GetDriveType(adr1) == DRIVE_REMOTE) { cout<<"("<<drv<<":) Remote Drive: "<<DirGESAMMT<<" "<<DirFREI<<" -> "<<DirFREIPRO<<"% (Error)\n"; } else if(::GetDriveType(adr1) == DRIVE_RAMDISK) { cout<<"("<<drv<<":) RamDisk: "<<DirGESAMMT<<" "<<DirFREI<<" -> "<<DirFREIPRO<<"% (Error)\n"; } else { cout<<"("<<drv<<":) "<<DirGESAMMT<<" "<<DirFREI<<" -> "<<DirFREIPRO<<"% (Error)\n"; } } else { if(::GetDriveType(adr1) == DRIVE_REMOTE) { cout<<"("<<drv<<":) Remote Drive: "<<DirGESAMMT<<" "<<DirFREI<<" -> "<<DirFREIPRO<<"% ("<<FileSystemNameBuffer<<")\n"; } else if(::GetDriveType(adr1) == DRIVE_RAMDISK) { cout<<"("<<drv<<":) RamDisk: "<<DirGESAMMT<<" "<<DirFREI<<" -> "<<DirFREIPRO<<"% ("<<FileSystemNameBuffer<<")\n"; } else { cout<<"("<<drv<<":) "<<DirGESAMMT<<" "<<DirFREI<<" -> "<<DirFREIPRO<<"% ("<<FileSystemNameBuffer<<")\n"; } } } if ((int)Int64ShrlMod32(TotalNumberOfFreeBytes.QuadPart,20)==0)//wenn der freiespeicher 0 bytes sind -> CD-Laufwerk + Ermittlung des Gesammtspeichers + (eventuell) Laufwerksnamen { sprintf(DirGESAMMT," (Belegt:) %iMB",Int64ShrlMod32(TotalNumberOfBytes.QuadPart,20)); if(VolumeNameBuffer){cout<<"("<<drv<<":) CD-Eingelegt"<<DirGESAMMT<<"\n";} else{cout<<"("<<drv<<":) CD-Eingelegt"<<DirGESAMMT<<" (CD-Name): "<<VolumeNameBuffer<<"\n";} } } } }
Viel Spass
-
schreibt man "gesammt" wirklich so? Früher war das doch mal "gesamt"?