65.9K
CodeProject 正在变化。 阅读更多。
Home

磁盘可用空间

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.51/5 (36投票s)

2003年4月7日

CPOL
viewsIcon

989834

downloadIcon

4100

此代码用于检查逻辑磁盘的可用空间。

Sample Image - Harddisk.jpg

引言

这段代码用于检查逻辑磁盘上的可用空间。

如何使用

将源文件 HardDiskManager.cpp 和 HardDiskManager.h 复制到您的项目目录,并将其添加到您的项目中。

CHardDiskManager::CHardDiskManager()
{
    // bytes available to caller
    m_uliFreeBytesAvailable.QuadPart = 0L;

    // bytes on disk
    m_uliTotalNumberOfBytes.QuadPart = 0L;

    // free bytes on disk
    m_uliTotalNumberOfFreeBytes.QuadPart = 0L;
}

CHardDiskManager::~CHardDiskManager()
{
}

bool CHardDiskManager::CheckFreeSpace(LPCTSTR lpDirectoryName)
{
    if( !GetDiskFreeSpaceEx(
        lpDirectoryName,                  // directory name
        &m_uliFreeBytesAvailable,         // bytes available to caller
        &m_uliTotalNumberOfBytes,         // bytes on disk
        &m_uliTotalNumberOfFreeBytes) )   // free bytes on disk
        return false;

    return true;
}

DWORD64 CHardDiskManager::GetFreeBytesAvailable(void)
{ 
    return m_uliFreeBytesAvailable.QuadPart;
}

DWORD64 CHardDiskManager::GetTotalNumberOfBytes(void)
{ 
    return m_uliTotalNumberOfBytes.QuadPart;
}

DWORD64 CHardDiskManager::GetTotalNumberOfFreeBytes(void)
{ 
    return m_uliTotalNumberOfFreeBytes.QuadPart;
}

double CHardDiskManager::GetFreeGBytesAvailable(void)
{ 
    return (double)(
        (signed __int64)(m_uliFreeBytesAvailable.QuadPart) /
        1.0e9
    );
}

double CHardDiskManager::GetTotalNumberOfGBytes(void)
{ 
    return (double)(
        (signed __int64)(m_uliTotalNumberOfBytes.QuadPart) /
        1.0e9
    );
}

double CHardDiskManager::GetTotalNumberOfFreeGBytes(void)
{ 
    return (double)(
        (signed __int64)(m_uliTotalNumberOfFreeBytes.QuadPart) /
        1.0e9
    );
}

//
// Application
//
#include "HardDiskManager.h"

using namespace std;


void main( int argc, char** argv ) 
{
    CHardDiskManager manager;

    // Set the directory name with " : " 
    // Ex:. C: , c: , F: , ...
    manager.CheckFreeSpace("c:");

    cout << "Drive C:\\" << endl;

    cout << "FreeBytesAvailable:     " <<
        manager.GetFreeGBytesAvailable() <<
        " GBytes. " << endl;
    
    cout << "TotalNumberOfBytes:     " <<
        manager.GetTotalNumberOfGBytes()
        << " GBytes. " << endl;

    cout << "TotalNumberOfFreeBytes: " <<
        manager.GetTotalNumberOfFreeGBytes() <<
        " GBytes. " << endl;

    manager.CheckFreeSpace("d:");

    cout << "Drive D:\\" << endl;

    cout << "FreeBytesAvailable:     " <<
        manager.GetFreeGBytesAvailable()
        << " GBytes. " << endl;

    cout << "TotalNumberOfBytes:     " <<
        manager.GetTotalNumberOfGBytes()
        << " GBytes. " << endl;

    cout << "TotalNumberOfFreeBytes: " <<
        manager.GetTotalNumberOfFreeGBytes() <<
        " GBytes. " << endl;

    return 0;
}

///////////////////////////////////////////////////////////////
© . All rights reserved.