datasoftware 发表于 2015-3-26 22:05:22

数据恢复编程学习: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();

}

suptidatta 发表于 2015-3-29 14:25:04

wanted a complied program please
页: [1]
查看完整版本: 数据恢复编程学习:C++获取本地磁盘驱动器的盘符、类型