利用Windows自带的动态库kernel32 .dll中函数bool GetVolumeInformationA(
LPCSTR lpRootPathName,// 磁盘驱动器代码字符串
LPSTR lpVolumeNameBuffer,// 磁盘驱动器卷标名称
DWORD nVolumeNameSize,// 磁盘驱动器卷标名称长度
LPDWORD lpVolumeSerialNumber,// 磁盘驱动器卷标序列号
LPDWORD lpMaximumComponentLength,// 系统允许的最大文件名长度
LPDWORD lpFileSystemFlags,// 文件系统标识
LPSTR lpFileSystemNameBuffer,// 文件操作系统名称
DWORD nFileSystemNameSize// 文件操作系统名称长度
);可以获取到磁盘相应信息
用UINT GetDriveType(LPCTSTR lpRootPathName );可以获取磁盘类型,返回值说明如下
DRIVE_UNKNOWN 未知的磁盘类型
DRIVE_NO_ROOT_DIR 说明lpRootPathName是无效的
DRIVE_REMOVABLE 可移动磁盘
DRIVE_FIXED 固定磁盘
DRIVE_REMOTE 网络磁盘
DRIVE_CDROM 光驱
DRIVE_RAMDISK 为RAM
实现代码
char lpRootPathName[255];
char path[255];
DWORD sn;
DWORD MaxLen;
DWORD MaxCLength;
DWORD FileSysFlag;
char FileSysName[255];
memset(lpRootPathName,0,255);
memset(path,0,255);
memset(FileSysName,0,255);
CString str,str1;
CString dir;
for (char Path='c';Path<='z';Path++)
{
dir.Format("%c:",Path);
switch(GetDriveType((LPCTSTR)dir))
{
case DRIVE_RAMDISK:
str.Format("%s盘为RAM",dir);
break;
case DRIVE_REMOTE:
str.Format("%s盘为网络磁盘",dir);
break ;
case DRIVE_UNKNOWN:
str.Format("%s盘为未知的磁盘类型",dir);
break;
case DRIVE_NO_ROOT_DIR:
str.Format("%s盘为是无效的盘",dir);
continue;
//break;
case DRIVE_REMOVABLE:
str.Format("%s盘为可移动磁盘",dir);
break;
case DRIVE_FIXED:
str.Format("%s盘为固定磁盘",dir);
break;
case DRIVE_CDROM:
str.Format("%s盘为光驱",dir);
break;
default :
break ;
}
GetVolumeInformation((LPCSTR)dir,path,255,&sn,&MaxCLength,&FileSysFlag,FileSysName,255);
str1.Format("/n磁盘驱动器代码字符串:%s/n磁盘驱动器卷标名称:%s/n磁盘驱动器卷标序列号:%d/n系统允许的最大文件名长度:%d/n文件系统标识:%d/n文件操作系统名称:%s",dir,path,sn,MaxCLength,FileSysFlag,FileSysName);
MessageBox(str+str1);
}
完毕,呵呵~~~~~~~~