1. 程式人生 > >Windows API一日一練 61 GetDriveType函數

Windows API一日一練 61 GetDriveType函數

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函數