2014-05-21 7 views
2

Je suis en train d'obtenir le volume numéro de série avec winapi en C++comment obtenir le volume numéro de série

je le code suivant:

DWORD VolumeSerialNumber=0; 
GetVolumeInformation(L"c:\\", NULL, NULL, &VolumeSerialNumber, NULL, NULL, NULL, NULL); 

il fonctionne très bien et retourne VolumeSerialNumber=571477456 mais cmd, quand j'utilise dir je reçois:

C:\Users\User>dir 
Volume in drive C is Windows 
Volume Serial Number is 2210-0DD0 

comment je convertir à 571.477.456 2210-0DD0?

Répondre

6

Vous avez juste besoin d'imprimer la valeur en hexadécimal au lieu de décimales, en utilisant le spécificateur de format %X:

printf("VolumeSerialNumber: 0x%X\n", VolumeSerialNumber); 

qui sera sortie:

0x22100dd0 

Si vous vraiment besoin la même sortie exacte, vous pouvez séparer le DWORD dans son WORDS inférieur et supérieur en utilisant le LOWORD et HIWORD macros:

printf("Volume Serial Number is %04X-%04X\n", 
    HIWORD(VolumeSerialNumber), 
    LOWORD(VolumeSerialNumber)); 

qui sortie:

Volume Serial Number is 2210-0DD0 
0

afin de convertir en hexadécimal int-string, je trouve cette solution:

char Hex_output [500]; 
itoa (VolumeSerialNumber ,Hex_output,16); 
Questions connexes