当前位置:首页 > windos > 正文

Windows API一日一练 61 GetDriveType函数

经常碰到这样的需求,比如你需要保存一个文件到一个目录里去,这个目录或许是用户指定的目录,那么你就需要确保这个目录是否有效的,这样就需要去测试这个目录是否允许写文件?这个目录是否存在?这个目录是否可写的?或者这个目录是否网络上的目录?要完成这个任务,就得使用函数 GetDriveType 来完成。 GetDriveType 函数可以获取目录和盘号的属性。   函数 GetDriveType 声明如下:   WINBASEAPI UINT WINAPI GetDriveTypeA(     __in_opt LPCSTR lpRootPathName     ); WINBASEAPI UINT WINAPI GetDriveTypeW(     __in_opt LPCWSTR lpRootPathName     ); #ifdef UNICODE #define GetDriveType GetDriveTypeW #else #define GetDriveType GetDriveTypeA #endif // !UNICODE   lpRootPathName 是目录或盘号的名称。 返回值是目录的属性,有如下值: DRIVE_UNKNOWN DRIVE_NO_ROOT_DIR DRIVE_REMOVABLE DRIVE_FIXED DRIVE_REMOTE DRIVE_CDROM DRIVE_RAMDISK   调用函数的例子如下: #001 // 获取目录或磁盘的属性。 #002  // 蔡军生  2007/10/30 QQ:9073204 深圳 #003  void Disk(void) #004  { #005         // 获取 C: 目录的属性。 #006         std::wstring strTest(_T("C://WINDOWS//")); #007        UINT nRes = ::GetDriveType(strTest.c_str()); #008         switch(nRes) #009         { #010         case DRIVE_UNKNOWN: #011               OutputDebugString(_T("DRIVE_UNKNOWN/r/n")); #012               break; #013         case DRIVE_NO_ROOT_DIR: #014               OutputDebugString(_T("DRIVE_NO_ROOT_DIR/r/n")); #015               break; #016         case DRIVE_REMOVABLE: #017               OutputDebugString(_T("DRIVE_REMOVABLE/r/n")); #018             break; #019         case DRIVE_FIXED: #020               OutputDebugString(_T("DRIVE_FIXED/r/n")); #021             break; #022         case DRIVE_REMOTE: #023               OutputDebugString(_T("DRIVE_REMOTE/r/n")); #024               break; #025         case DRIVE_CDROM: #026               OutputDebugString(_T("DRIVE_CDROM/r/n")); #027               break; #028         case DRIVE_RAMDISK: #029               OutputDebugString(_T("DRIVE_RAMDISK/r/n")); #030               break; #031         default: #032             break; #033         } #034  #035         // 判断盘号是否光驱。 #036         strTest = _T("d://"); #037        nRes = ::GetDriveType(strTest.c_str()); #038         switch(nRes) #039         { #040         case DRIVE_UNKNOWN: #041               OutputDebugString(_T("DRIVE_UNKNOWN/r/n")); #042               break; #043         case DRIVE_NO_ROOT_DIR: #044               OutputDebugString(_T("DRIVE_NO_ROOT_DIR/r/n")); #045               break; #046         case DRIVE_REMOVABLE: #047               OutputDebugString(_T("DRIVE_REMOVABLE/r/n")); #048               break; #049         case DRIVE_FIXED: #050               OutputDebugString(_T("DRIVE_FIXED/r/n")); #051               break; #052         case DRIVE_REMOTE: #053               OutputDebugString(_T("DRIVE_REMOTE/r/n")); #054               break; #055         case DRIVE_CDROM: #056               OutputDebugString(_T("DRIVE_CDROM/r/n")); #057               break; #058         case DRIVE_RAMDISK: #059               OutputDebugString(_T("DRIVE_RAMDISK/r/n")); #060               break; #061         default: #062               break; #063         } #064  }  

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow