如何判断当前应用程序是使用的光盘还是硬盘,或者是使用的光驱或者硬盘

解决方案 »

  1.   

    GetCurrentDirectory()然后解析出前面的盘符,然后GetDriverType
      

  2.   

    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
      

  3.   

    void Disk(void)
      {
             //获取C:目录的属性。
            std::wstring strTest(_T("C:\\WINDOWS\\"));
            UINT nRes = ::GetDriveType(strTest.c_str());
            switch(nRes)
             {
            case DRIVE_UNKNOWN:
                  OutputDebugString(_T("DRIVE_UNKNOWN\r\n"));
                   break;
             case DRIVE_NO_ROOT_DIR:
                  OutputDebugString(_T("DRIVE_NO_ROOT_DIR\r\n"));
                  break;
            case DRIVE_REMOVABLE:
                 OutputDebugString(_T("DRIVE_REMOVABLE\r\n"));
               break;
             case DRIVE_FIXED:
                  OutputDebugString(_T("DRIVE_FIXED\r\n"));
                 break;
             case DRIVE_REMOTE:
                   OutputDebugString(_T("DRIVE_REMOTE\r\n"));
                   break;
             case DRIVE_CDROM:
                   OutputDebugString(_T("DRIVE_CDROM\r\n"));
                   break;
             case DRIVE_RAMDISK:
                   OutputDebugString(_T("DRIVE_RAMDISK\r\n"));
                   break;
             default:
                 break;
             }