Seriennummer eines Laufwerks auslesen



  • hi

    mit GetVolumeInformation kann man verschiedene Dinge von einem Volume auslesen (name, dateisystem und seriennummer).

    GetVolumeInformation("D:\",rrr,bufsize,serialnumber,&cchBuff,&flags,uuu,bufsize);

    serialnumber ist eine variable vom typ LPDWORD.
    wie bekomm ich jetzt die seriennummer in einen char-array??

    danke für eure hilfe



  • itoa()
    Aber mit Malloc vorher den Speicher anfordern...


  • Administrator

    Hab die Funktion noch nie benutzt, aber wie wäre es mit:

    char buf[10];
    DWORD nSerialnumber;
    
    // Ich habe es jetzt zur Vereinfachung so gemacht, dass nur die Serialnumber geholt wird. Weiss allerdings nicht ob das geht!
    GetVolumeInformation("D:\\", NULL, 0, &nSerialnumber, NULL, NULL, NULL, 0);
    
    sprintf_s(buf, 10, "%n", nSerialnumber);
    

    Dürfte eigentlich so gehen.

    Grüssli



  • ich hab jetzt

    _ultoa(serialnumber,uuu,16); //uuu ist der chararray

    aber er meldet:
    error C2664: '_ultoa' : Konvertierung des Parameters 1 von 'unsigned long *' in 'unsigned long' nicht moeglich

    was soll ich tun?



  • void HDData(void) {
    	DWORD lVolSerialNbr=0, lVolNameSize=0;
    	char *sVolName;
    
    	sVolName = (char *)malloc(1000+1);
    	GetVolumeInformation( "C:\\", sVolName, 1000, &lVolSerialNbr, 0, 0, 0, 0);
    	printf("%s und %d", sVolName, lVolSerialNbr);
    	free(sVolName);
    }
    


  • void HDData(void) {
    	DWORD lVolSerialNbr=0, lVolNameSize=0;
    	char *sVolName, *sSerial=0;
    
    	sVolName = (char *)malloc(1000+1);
    	GetVolumeInformation( "C:\\", sVolName, 1000, &lVolSerialNbr, 0, 0, 0, 0);
    	sSerial = (char *)malloc(20);
    	ultoa(lVolSerialNbr, sSerial, 10);
    
    	printf("%s und %s", sVolName, sSerial); 
    
    	free(sSerial);
    	free(sVolName);
    }
    

    Nimm lieber ultoa(), die Serial ist ein DWORD...



  • danke, läuft wunderbar 🙂


Anmelden zum Antworten