急需一个vc++程序,检测硬盘空间大小

需要一个vc++程序,检测硬盘空间大小
rt,我是通过一个录像的按钮来触发,当剩余空间足够时,再开始录像,如果不足时就提示信息
而且检索的硬盘空间不是全部硬盘,而是该程序所在盘的硬盘

------解决方案--------------------
GetDiskFreeSpaceEx
------解决方案--------------------
C/C++ code

        // 这个只是得到硬盘上一个分区的大小。如果要得到整个硬盘的大小则要复杂得多,我有一个DLL可以做到,但只支持ATA硬盘。
    ULARGE_INTEGER    pqwFreeCaller,
            pqwTot,
            pqwFree;
    const char *pDisk = "C:";
    if( SHGetDiskFreeSpace(pDisk, &pqwFreeCaller, &pqwTot, &pqwFree) )
    {
        pqwFree.QuadPart; // 这个就是可用空间大小的值。
    }

------解决方案--------------------
下面的代码是得到硬盘中每个盘的空间相加求总硬盘空间,你只指定一个盘符就行了!
C/C++ code
    ///////////get disk space/////////////
    
    DWORD maskdriver;
    ULONGLONG totalspace=0,freespace=0;
    ULONGLONG ulltotalspace,ullfreespace,freebyte;
    DWORD drivertype;
    char driver[10];
    if(!(maskdriver=GetLogicalDrives()))
        return false;
    for(int i=0;i<26;i++)
    {
        if(!(maskdriver>>i))
            break;
        if(maskdriver>>i&1)
        {
            driver[0]=i+'A';
            driver[1]=':';
            driver[2]='\\';
            driver[3]=0;
            drivertype=GetDriveType(driver);
            if(drivertype!=DRIVE_FIXED)
                continue;
            if(!GetDiskFreeSpaceEx (driver,
                            (PULARGE_INTEGER)&freebyte,
                            (PULARGE_INTEGER)&ulltotalspace,
                            (PULARGE_INTEGER)&ullfreespace))
                return false;
            totalspace+=ulltotalspace;
            freespace+=ullfreespace;
        }
    }
    //signed __int64 dfreespace=0.0,dtotalspace=0.0,lv;
    double dfreespace=0.0,dtotalspace=0.0,lv;
    dfreespace=(signed __int64)freespace/(1024*1024*1024);
    dtotalspace=(signed __int64)totalspace/(1024*1024*1024);
    lv=(signed __int64)(freespace/totalspace)*100;
    char space[256];
    sprintf(space,"总磁盘空间为:%.3fG,剩余磁盘空间为:%.3fG(占%.3f%c)",dtotalspace,dfreespace,lv,'%');