如何获得卷序列号

时间:2014-05-21 07:59:14

标签: c++ c winapi

我正在尝试使用c ++中的winapi获取卷序列号

我有以下代码:

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

它工作正常并返回VolumeSerialNumber=571477456 但在cmd中,当我使用dir时,我得到了:

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

如何将571477456转换为2210-0DD0?

2 个答案:

答案 0 :(得分:6)

您只需要使用%X格式说明符以十六进制而不是十进制打印值:

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

将输出:

0x22100dd0

如果确实需要完全相同的输出,您可以使用LOWORD和{{3}将DWORD分隔为其WORDS的上下printf("Volume Serial Number is %04X-%04X\n", HIWORD(VolumeSerialNumber), LOWORD(VolumeSerialNumber)); }宏:

Volume Serial Number is 2210-0DD0

将输出:

{{1}}

答案 1 :(得分:0)

为了将int转换为hex-string,我找到了这个解决方案:

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