winbase.h文件定义了该函数接口返回值(枚举类型)

1 #define DRIVE_UNKNOWN     0
2 #define DRIVE_NO_ROOT_DIR 1
3 #define DRIVE_REMOVABLE   2
4 #define DRIVE_FIXED       3
5 #define DRIVE_REMOTE      4
6 #define DRIVE_CDROM       5
7 #define DRIVE_RAMDISK     6

函数定义在fileapi.h文件有声明,原型

WINBASEAPI UINT WINAPI GetDriveTypeA( _In_opt_ LPCSTR lpRootPathName  );

在给出某一路径进行递归创建前,应先判断该文件夹所在硬盘盘符是否存在,参考windows下如何获取系统已存在的盘符 【c++】代码。

 1 #include <iostream>
 2 #include "classAh.h"
 3 #include <atlstr.h> 
 4 using namespace std;
 5 
 6 
 7 int main()
 8 {
 9     char rootPath[10] = {0}, driveType[21] = {0};  
10     UINT nType;  
11 
12     for(char a = 'A'; a <= 'Z'; a++)  
13     {  
14         sprintf(rootPath, "%c:\\", a);  
15         nType = GetDriveType(rootPath);  
16         if(nType != DRIVE_NO_ROOT_DIR)                  // DRIVE_NO_ROOT_DIR: 路径无效  
17         {  
18             switch(nType)  
19             {  
20             case DRIVE_FIXED:  
21                 strcpy(driveType, "硬盘");  
22                 break;  
23             case DRIVE_REMOVABLE:  
24                 strcpy(driveType, "移动硬盘");  
25                 break;  
26             case DRIVE_CDROM:  
27                 strcpy(driveType, "光盘");  
28                 break;  
29             case DRIVE_RAMDISK:  
30                 strcpy(driveType, "RAM盘");  
31                 break;  
32             case DRIVE_REMOTE:  
33                 strcpy(driveType, "Remote(Network) drive 网络磁盘");  
34                 break;  
35             case DRIVE_UNKNOWN:  
36             default:  
37                 strcpy(driveType, "未知盘");  
38                 break;  
39             }  
40             cout<<rootPath<<"\t"<<driveType<<endl;  
41         }  
42     }  
43     
44     getchar();
45     return 0;
46 }

 

没有坚守就没有事业,没有执着就没有未来!