数据恢复编程学习:C++获取本地磁盘驱动器的盘符、类型
数据恢复编程学习:C++获取本地磁盘驱动器的盘符、类型2015-03-26
#include<windows.h>
#include<tchar.h>
#include<iostream>
char *DispDriveType(int n)
{
switch (n)//
{
case 0: //DRIVE_UNKNOWN
return "未知磁盘";
break;
case 1://
return"磁盘不存在";
break;
case 2://
return"可移动硬盘";
break;
case 3://
return"本地磁盘";
break;
case 4://
return"网络驱动器";
case 5://
return"CD/DVD_ROM";
case 6://
return"随机存取磁盘";
break;
}
}
void main()
{
using namespace std;
TCHAR a;
DWORD len=GetLogicalDriveStrings(sizeof(a)/sizeof(TCHAR),a);// sizeof(a)/sizeof(TCHAR) 声明的是一个包含256个TCHAR类型字符的数组,所以相除还是256
cout << "磁盘编号"<<"\t\t" <<"磁盘类型" << endl;
for(TCHAR *s = a;*s;s+=_tcslen(s)+1)
// *s = a是for初始化的地方,指的是把*s指向a数组开头的那个字符.
//*s为判断条件.当s指向的地方不为0,也就是还没到'\0'的时候那么继续循环
//s+=_tcslen(s)+1指的是跳转到下一个字符串开头的地方,这是和GetLogicalDriveStrings配套用的
/*
举个例子 GetLogicalDriveStrings假设返回的字符串如下:"C:\0D:\0E\0\0\0\0\0...."
最后\0填充的大小应该和你填进去的sizeof(a)/sizeof(TCHAR)有关
那么当*s = a时 s指向的字符串是"C:"因为看到\0就认为字符串结束了开始循环
1:*s = 'C' -> 执行循环体 -> _tcslen(s) 相当于 _tcslen("C:")等于2, +1=3 -> s+=_tcslen(s)+1 s指向"D:"*/
{
cout << s << "\t\t" << DispDriveType(GetDriveType(s)) << endl;
}
cin.get();
} wanted a complied program please
页:
[1]