GetLogicalDriveStrings:获取盘符名称的信息,GetVolumeInformation:获取卷标等信息
#include <windows.h>
#include <stdio.h>
#include <string>
#include <tchar.h>
int main(int argc, char **argv)
{
std::string strdevicename;
TCHAR szBuf[100];
memset(szBuf,0,100);
char VolumeName[256];
DWORD VolumeSerialNumber;
//获取移动盘符
unsigned long len = GetLogicalDriveStrings(sizeof(szBuf)/sizeof(TCHAR),szBuf);
if (0 == len)
{
return -1;
}
for (TCHAR * s= szBuf; *s; s+=_tcslen(s)+1)
{
LPCTSTR sDrivePath = s;
UINT uDriveType = GetDriveType(sDrivePath);
if (DRIVE_REMOVABLE == uDriveType)
{
memset(VolumeName, 0, 256);
strdevicename.assign(sDrivePath);
GetVolumeInformation(strdevicename.c_str(), VolumeName, 12,
&VolumeSerialNumber, NULL, NULL, NULL, 10);
strdevicename += VolumeName;
printf("卷标:%s/n", strdevicename.c_str());
printf("序列号:%lu/n",VolumeSerialNumber);
}
}
return 0;
}