C++ 获得本地磁盘盘符的容量信息

编程过程中涉及存储部分常常需要选择存储位置,此时比较关心的是各个磁盘盘符空间的总大小和剩余空间的大小。通过MFC的 List Control 控件可以将本地的磁盘容量信息显示出来并提供给用户选择的接口,是一种存储文件不错的思路。下面的代码实现了获得本地磁盘盘符容量信息的部分:

    ULARGE_INTEGER nFreeBytesAvailable;  
    ULARGE_INTEGER nTotalNumberOfBytes;  
    ULARGE_INTEGER nTotalNumberOfFreeBytes;  
      
    WCHAR Drive[MAX_PATH] = { 0 };//初始化数组用以存储盘符信息  
    GetLogicalDriveStrings(MAX_PATH, Drive);//获得本地所有盘符存在Drive数组中  
      
    CString myDrive;  
    int i = 0;  
    while (Drive[i - 1] != '\0' || Drive[i] != '\0')//搜索数组尝试得到盘符信息,如果两者皆否,则数组搜索到尽头  
    {  
            myDrive = L"";  
            myDrive = Drive[i];  
        myDrive = myDrive + L":";//将盘符信息的格式调整为像“C:”这种格式,以作为GetDiskFreeSpaceEx函数的第一个参数  
        i += 4;  
      
        if (GetDiskFreeSpaceEx(myDrive,  
            &nFreeBytesAvailable,  
            &nTotalNumberOfBytes,  
            &nTotalNumberOfFreeBytes))//利用GetDiskFreeSpaceEx函数获得指定磁盘信息  
        {  
            long mywholespace = nTotalNumberOfBytes.QuadPart/1024/1024/1024;//得到磁盘总空间,单位为G  
            long myfreespace = nTotalNumberOfFreeBytes.QuadPart/1024/1024/1024;//得到磁盘剩余空间,单位为G  
        }  
    }  

编程技巧