[Win32]獲取當前系統可用磁盤空間最大的盤符

int GetMostFreeSpaceDisk(TCHAR &aDriveName)
{
        TCHAR driveNames[MAX_PATH] = {0};
        DWORD len = GetLogicalDriveStrings(MAX_PATH, driveNames);
        
        TCHAR maxDrive[MAX_PATH] = {0};
        DWORD count = len / 4;
        TCHAR *p = driveNames;
        ULARGE_INTEGER lastSize;
        lastSize.QuadPart = 0;
        for (DWORD i = 0; i < count; ++i)
        {
                if (GetDriveType(p) != DRIVE_FIXED)
                {
                        p += 4;
                        continue;
                }

                TCHAR driveName[MAX_PATH] = {0};
                _tcscpy_s(driveName, MAX_PATH, p);

                ULARGE_INTEGER FreeBytesAvailable;
                ULARGE_INTEGER TotalNumberOfBytes;
                ULARGE_INTEGER TotalNumberOfFreeBytes;
                GetDiskFreeSpaceEx(driveName, &FreeBytesAvailable, &TotalNumberOfBytes, &TotalNumberOfFreeBytes);

                if (FreeBytesAvailable.QuadPart > lastSize.QuadPart)
                {
                        _tcscpy_s(maxDrive, MAX_PATH, driveName);
                        lastSize.QuadPart = FreeBytesAvailable.QuadPart;
                        aDriveName = maxDrive[0];
                }

                p += 4;

                Sleep(100);
        }

        return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章