Volume serial number



  • Hallo,

    ich habe da eine kleine Frage. Ich brauche unbedingt die Volume serial number von meiner HD. Soweit so gut. Die habe ich auch, aber hier das Problem:

    Wenn ich auf der DOS Commando Zeile "vol" oder "label" eintippe bekomme ich etwas wie xxxx-xxxx für meine serial number.

    Aber wenn ich den System Call mit GetVolumeInformation die Serialnumber auslese dann bekomme ich etwas sehr langes wie 724183336 ...

    Also etwas ganz anderes als mit "vol". Wie kann ich das richtig auslesen???

    Bitte helft mir, denn es ist wichtig.

    Ich danke Euch

    Gruss

    chris.

    char RootPathName[256]="c:\\";          // address of name of root directory 
    	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 
    	bool Res; 
    	UINT OldErrMode; 
    	OldErrMode=SetErrorMode(SEM_FAILCRITICALERRORS); 
    	/* 
    	LPCTSTR lpRootPathName,   // address of root directory of the file system 
    	LPTSTR lpVolumeNameBuffer,  // address of name of the volume 
    	DWORD nVolumeNameSize,  // length of lpVolumeNameBuffer 
    	LPDWORD lpVolumeSerialNumber,   // address of volume serial number 
    	LPDWORD lpMaximumComponentLength,   // address of system's maximum filename length 
    	LPDWORD lpFileSystemFlags,  // address of file system flags 
    	LPTSTR lpFileSystemNameBuffer,  // address of name of file system 
    	DWORD nFileSystemNameSize   // length of lpFileSystemNameBuffer 
    	*/ 
    	Res=GetVolumeInformation(NULL,VolumeNameBuffer,255, 
    						 &VolumeSerialNumber,&MaximumComponentLength, 
    						   &FileSystemFlags,FileSystemNameBuffer,255 ); 
    	printf("SN: %lu\n",VolumeSerialNumber); 
    	printf("VN: %s\n",VolumeNameBuffer); 
    	printf("SN: %lu\n",FileSystemFlags);
    


  • Das eine ist die hexa-dezimale Darstellung und das andere die dezimale Darstellung der SN.

    Gruß WoWe


Anmelden zum Antworten