Windows API一日一練 61 GetDriveType函數
阿新 • • 發佈:2019-02-01
led ews 是否有效 bsp 目錄 otp get fix 易懂
經常碰到這樣的需求,比如你需要保存一個文件到一個目錄裏去,這個目錄或許是用戶指定的目錄,那麽你就需要確保這個目錄是否有效的,這樣就需要去測試這個目錄是否允許寫文件?這個目錄是否存在?這個目錄是否可寫的?或者這個目錄是否網絡上的目錄?要完成這個任務,就得使用函數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
Windows API一日一練 61 GetDriveType函數