Windows API一日一練(61)GetDriveType函數

來源:互聯網
上載者:User
  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  }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.